]> git.leonardobizzoni.com Git - pioneer-stm32/commitdiff
encoder not compiling
authorFederica Di Lauro <federicadilauro1998@gmail.com>
Thu, 19 Sep 2019 16:02:24 +0000 (18:02 +0200)
committerFederica Di Lauro <federicadilauro1998@gmail.com>
Thu, 19 Sep 2019 16:02:24 +0000 (18:02 +0200)
371 files changed:
otto_controller_source/.cproject
otto_controller_source/.settings/language.settings.xml
otto_controller_source/Debug/Src/subdir.mk
otto_controller_source/Debug/Startup/subdir.mk
otto_controller_source/Debug/objects.list
otto_controller_source/Debug/otto_controller_source.list
otto_controller_source/Inc/STM32Hardware.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib/TestAction.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib/TestActionFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib/TestActionGoal.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib/TestActionResult.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib/TestFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib/TestGoal.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib/TestRequestAction.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib/TestRequestActionFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib/TestRequestActionGoal.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib/TestRequestActionResult.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib/TestRequestFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib/TestRequestGoal.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib/TestRequestResult.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib/TestResult.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib/TwoIntsAction.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib/TwoIntsActionFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib/TwoIntsActionGoal.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib/TwoIntsActionResult.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib/TwoIntsFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib/TwoIntsGoal.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib/TwoIntsResult.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib_msgs/GoalID.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib_msgs/GoalStatus.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib_msgs/GoalStatusArray.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib_tutorials/AveragingAction.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib_tutorials/AveragingActionFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib_tutorials/AveragingActionGoal.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib_tutorials/AveragingActionResult.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib_tutorials/AveragingFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib_tutorials/AveragingGoal.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib_tutorials/AveragingResult.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib_tutorials/FibonacciAction.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib_tutorials/FibonacciActionFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib_tutorials/FibonacciActionGoal.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib_tutorials/FibonacciActionResult.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib_tutorials/FibonacciFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib_tutorials/FibonacciGoal.h [new file with mode: 0644]
otto_controller_source/Inc/actionlib_tutorials/FibonacciResult.h [new file with mode: 0644]
otto_controller_source/Inc/bond/Constants.h [new file with mode: 0644]
otto_controller_source/Inc/bond/Status.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/FollowJointTrajectoryAction.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/FollowJointTrajectoryActionFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/FollowJointTrajectoryActionGoal.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/FollowJointTrajectoryActionResult.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/FollowJointTrajectoryFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/FollowJointTrajectoryGoal.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/FollowJointTrajectoryResult.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/GripperCommand.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/GripperCommandAction.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/GripperCommandActionFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/GripperCommandActionGoal.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/GripperCommandActionResult.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/GripperCommandFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/GripperCommandGoal.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/GripperCommandResult.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/JointControllerState.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/JointJog.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/JointTolerance.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/JointTrajectoryAction.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/JointTrajectoryActionFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/JointTrajectoryActionGoal.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/JointTrajectoryActionResult.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/JointTrajectoryControllerState.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/JointTrajectoryFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/JointTrajectoryGoal.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/JointTrajectoryResult.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/PidState.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/PointHeadAction.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/PointHeadActionFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/PointHeadActionGoal.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/PointHeadActionResult.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/PointHeadFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/PointHeadGoal.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/PointHeadResult.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/QueryCalibrationState.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/QueryTrajectoryState.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/SingleJointPositionAction.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/SingleJointPositionActionFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/SingleJointPositionActionGoal.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/SingleJointPositionActionResult.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/SingleJointPositionFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/SingleJointPositionGoal.h [new file with mode: 0644]
otto_controller_source/Inc/control_msgs/SingleJointPositionResult.h [new file with mode: 0644]
otto_controller_source/Inc/control_toolbox/SetPidGains.h [new file with mode: 0644]
otto_controller_source/Inc/controller_manager_msgs/ControllerState.h [new file with mode: 0644]
otto_controller_source/Inc/controller_manager_msgs/ControllerStatistics.h [new file with mode: 0644]
otto_controller_source/Inc/controller_manager_msgs/ControllersStatistics.h [new file with mode: 0644]
otto_controller_source/Inc/controller_manager_msgs/HardwareInterfaceResources.h [new file with mode: 0644]
otto_controller_source/Inc/controller_manager_msgs/ListControllerTypes.h [new file with mode: 0644]
otto_controller_source/Inc/controller_manager_msgs/ListControllers.h [new file with mode: 0644]
otto_controller_source/Inc/controller_manager_msgs/LoadController.h [new file with mode: 0644]
otto_controller_source/Inc/controller_manager_msgs/ReloadControllerLibraries.h [new file with mode: 0644]
otto_controller_source/Inc/controller_manager_msgs/SwitchController.h [new file with mode: 0644]
otto_controller_source/Inc/controller_manager_msgs/UnloadController.h [new file with mode: 0644]
otto_controller_source/Inc/diagnostic_msgs/AddDiagnostics.h [new file with mode: 0644]
otto_controller_source/Inc/diagnostic_msgs/DiagnosticArray.h [new file with mode: 0644]
otto_controller_source/Inc/diagnostic_msgs/DiagnosticStatus.h [new file with mode: 0644]
otto_controller_source/Inc/diagnostic_msgs/KeyValue.h [new file with mode: 0644]
otto_controller_source/Inc/diagnostic_msgs/SelfTest.h [new file with mode: 0644]
otto_controller_source/Inc/dynamic_reconfigure/BoolParameter.h [new file with mode: 0644]
otto_controller_source/Inc/dynamic_reconfigure/Config.h [new file with mode: 0644]
otto_controller_source/Inc/dynamic_reconfigure/ConfigDescription.h [new file with mode: 0644]
otto_controller_source/Inc/dynamic_reconfigure/DoubleParameter.h [new file with mode: 0644]
otto_controller_source/Inc/dynamic_reconfigure/Group.h [new file with mode: 0644]
otto_controller_source/Inc/dynamic_reconfigure/GroupState.h [new file with mode: 0644]
otto_controller_source/Inc/dynamic_reconfigure/IntParameter.h [new file with mode: 0644]
otto_controller_source/Inc/dynamic_reconfigure/ParamDescription.h [new file with mode: 0644]
otto_controller_source/Inc/dynamic_reconfigure/Reconfigure.h [new file with mode: 0644]
otto_controller_source/Inc/dynamic_reconfigure/SensorLevels.h [new file with mode: 0644]
otto_controller_source/Inc/dynamic_reconfigure/StrParameter.h [new file with mode: 0644]
otto_controller_source/Inc/encoder.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/ApplyBodyWrench.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/ApplyJointEffort.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/BodyRequest.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/ContactState.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/ContactsState.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/DeleteLight.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/DeleteModel.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/GetJointProperties.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/GetLightProperties.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/GetLinkProperties.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/GetLinkState.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/GetModelProperties.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/GetModelState.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/GetPhysicsProperties.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/GetWorldProperties.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/JointRequest.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/LinkState.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/LinkStates.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/ModelState.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/ModelStates.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/ODEJointProperties.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/ODEPhysics.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/SetJointProperties.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/SetJointTrajectory.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/SetLightProperties.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/SetLinkProperties.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/SetLinkState.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/SetModelConfiguration.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/SetModelState.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/SetPhysicsProperties.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/SpawnModel.h [new file with mode: 0644]
otto_controller_source/Inc/gazebo_msgs/WorldState.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/Accel.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/AccelStamped.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/AccelWithCovariance.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/AccelWithCovarianceStamped.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/Inertia.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/InertiaStamped.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/Point.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/Point32.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/PointStamped.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/Polygon.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/PolygonStamped.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/Pose.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/Pose2D.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/PoseArray.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/PoseStamped.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/PoseWithCovariance.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/PoseWithCovarianceStamped.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/Quaternion.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/QuaternionStamped.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/Transform.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/TransformStamped.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/Twist.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/TwistStamped.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/TwistWithCovariance.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/TwistWithCovarianceStamped.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/Vector3.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/Vector3Stamped.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/Wrench.h [new file with mode: 0644]
otto_controller_source/Inc/geometry_msgs/WrenchStamped.h [new file with mode: 0644]
otto_controller_source/Inc/laser_assembler/AssembleScans.h [new file with mode: 0644]
otto_controller_source/Inc/laser_assembler/AssembleScans2.h [new file with mode: 0644]
otto_controller_source/Inc/map_msgs/GetMapROI.h [new file with mode: 0644]
otto_controller_source/Inc/map_msgs/GetPointMap.h [new file with mode: 0644]
otto_controller_source/Inc/map_msgs/GetPointMapROI.h [new file with mode: 0644]
otto_controller_source/Inc/map_msgs/OccupancyGridUpdate.h [new file with mode: 0644]
otto_controller_source/Inc/map_msgs/PointCloud2Update.h [new file with mode: 0644]
otto_controller_source/Inc/map_msgs/ProjectedMap.h [new file with mode: 0644]
otto_controller_source/Inc/map_msgs/ProjectedMapInfo.h [new file with mode: 0644]
otto_controller_source/Inc/map_msgs/ProjectedMapsInfo.h [new file with mode: 0644]
otto_controller_source/Inc/map_msgs/SaveMap.h [new file with mode: 0644]
otto_controller_source/Inc/map_msgs/SetMapProjections.h [new file with mode: 0644]
otto_controller_source/Inc/nav_msgs/GetMap.h [new file with mode: 0644]
otto_controller_source/Inc/nav_msgs/GetMapAction.h [new file with mode: 0644]
otto_controller_source/Inc/nav_msgs/GetMapActionFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/nav_msgs/GetMapActionGoal.h [new file with mode: 0644]
otto_controller_source/Inc/nav_msgs/GetMapActionResult.h [new file with mode: 0644]
otto_controller_source/Inc/nav_msgs/GetMapFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/nav_msgs/GetMapGoal.h [new file with mode: 0644]
otto_controller_source/Inc/nav_msgs/GetMapResult.h [new file with mode: 0644]
otto_controller_source/Inc/nav_msgs/GetPlan.h [new file with mode: 0644]
otto_controller_source/Inc/nav_msgs/GridCells.h [new file with mode: 0644]
otto_controller_source/Inc/nav_msgs/MapMetaData.h [new file with mode: 0644]
otto_controller_source/Inc/nav_msgs/OccupancyGrid.h [new file with mode: 0644]
otto_controller_source/Inc/nav_msgs/Odometry.h [new file with mode: 0644]
otto_controller_source/Inc/nav_msgs/Path.h [new file with mode: 0644]
otto_controller_source/Inc/nav_msgs/SetMap.h [new file with mode: 0644]
otto_controller_source/Inc/nodelet/NodeletList.h [new file with mode: 0644]
otto_controller_source/Inc/nodelet/NodeletLoad.h [new file with mode: 0644]
otto_controller_source/Inc/nodelet/NodeletUnload.h [new file with mode: 0644]
otto_controller_source/Inc/pcl_msgs/ModelCoefficients.h [new file with mode: 0644]
otto_controller_source/Inc/pcl_msgs/PointIndices.h [new file with mode: 0644]
otto_controller_source/Inc/pcl_msgs/PolygonMesh.h [new file with mode: 0644]
otto_controller_source/Inc/pcl_msgs/Vertices.h [new file with mode: 0644]
otto_controller_source/Inc/polled_camera/GetPolledImage.h [new file with mode: 0644]
otto_controller_source/Inc/ros.h [new file with mode: 0644]
otto_controller_source/Inc/ros/duration.h [new file with mode: 0644]
otto_controller_source/Inc/ros/msg.h [new file with mode: 0644]
otto_controller_source/Inc/ros/node_handle.h [new file with mode: 0644]
otto_controller_source/Inc/ros/publisher.h [new file with mode: 0644]
otto_controller_source/Inc/ros/service_client.h [new file with mode: 0644]
otto_controller_source/Inc/ros/service_server.h [new file with mode: 0644]
otto_controller_source/Inc/ros/subscriber.h [new file with mode: 0644]
otto_controller_source/Inc/ros/time.h [new file with mode: 0644]
otto_controller_source/Inc/roscpp/Empty.h [new file with mode: 0644]
otto_controller_source/Inc/roscpp/GetLoggers.h [new file with mode: 0644]
otto_controller_source/Inc/roscpp/Logger.h [new file with mode: 0644]
otto_controller_source/Inc/roscpp/SetLoggerLevel.h [new file with mode: 0644]
otto_controller_source/Inc/roscpp_tutorials/TwoInts.h [new file with mode: 0644]
otto_controller_source/Inc/rosgraph_msgs/Clock.h [new file with mode: 0644]
otto_controller_source/Inc/rosgraph_msgs/Log.h [new file with mode: 0644]
otto_controller_source/Inc/rosgraph_msgs/TopicStatistics.h [new file with mode: 0644]
otto_controller_source/Inc/rospy_tutorials/AddTwoInts.h [new file with mode: 0644]
otto_controller_source/Inc/rospy_tutorials/BadTwoInts.h [new file with mode: 0644]
otto_controller_source/Inc/rospy_tutorials/Floats.h [new file with mode: 0644]
otto_controller_source/Inc/rospy_tutorials/HeaderString.h [new file with mode: 0644]
otto_controller_source/Inc/rosserial_msgs/Log.h [new file with mode: 0644]
otto_controller_source/Inc/rosserial_msgs/RequestMessageInfo.h [new file with mode: 0644]
otto_controller_source/Inc/rosserial_msgs/RequestParam.h [new file with mode: 0644]
otto_controller_source/Inc/rosserial_msgs/RequestServiceInfo.h [new file with mode: 0644]
otto_controller_source/Inc/rosserial_msgs/TopicInfo.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/BatteryState.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/CameraInfo.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/ChannelFloat32.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/CompressedImage.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/FluidPressure.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/Illuminance.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/Image.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/Imu.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/JointState.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/Joy.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/JoyFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/JoyFeedbackArray.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/LaserEcho.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/LaserScan.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/MagneticField.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/MultiDOFJointState.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/MultiEchoLaserScan.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/NavSatFix.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/NavSatStatus.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/PointCloud.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/PointCloud2.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/PointField.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/Range.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/RegionOfInterest.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/RelativeHumidity.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/SetCameraInfo.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/Temperature.h [new file with mode: 0644]
otto_controller_source/Inc/sensor_msgs/TimeReference.h [new file with mode: 0644]
otto_controller_source/Inc/shape_msgs/Mesh.h [new file with mode: 0644]
otto_controller_source/Inc/shape_msgs/MeshTriangle.h [new file with mode: 0644]
otto_controller_source/Inc/shape_msgs/Plane.h [new file with mode: 0644]
otto_controller_source/Inc/shape_msgs/SolidPrimitive.h [new file with mode: 0644]
otto_controller_source/Inc/smach_msgs/SmachContainerInitialStatusCmd.h [new file with mode: 0644]
otto_controller_source/Inc/smach_msgs/SmachContainerStatus.h [new file with mode: 0644]
otto_controller_source/Inc/smach_msgs/SmachContainerStructure.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/Bool.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/Byte.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/ByteMultiArray.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/Char.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/ColorRGBA.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/Duration.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/Empty.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/Float32.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/Float32MultiArray.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/Float64.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/Float64MultiArray.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/Header.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/Int16.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/Int16MultiArray.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/Int32.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/Int32MultiArray.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/Int64.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/Int64MultiArray.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/Int8.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/Int8MultiArray.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/MultiArrayDimension.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/MultiArrayLayout.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/String.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/Time.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/UInt16.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/UInt16MultiArray.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/UInt32.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/UInt32MultiArray.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/UInt64.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/UInt64MultiArray.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/UInt8.h [new file with mode: 0644]
otto_controller_source/Inc/std_msgs/UInt8MultiArray.h [new file with mode: 0644]
otto_controller_source/Inc/std_srvs/Empty.h [new file with mode: 0644]
otto_controller_source/Inc/std_srvs/SetBool.h [new file with mode: 0644]
otto_controller_source/Inc/std_srvs/Trigger.h [new file with mode: 0644]
otto_controller_source/Inc/stereo_msgs/DisparityImage.h [new file with mode: 0644]
otto_controller_source/Inc/stm32f7xx_hal_conf.h
otto_controller_source/Inc/tf/FrameGraph.h [new file with mode: 0644]
otto_controller_source/Inc/tf/tf.h [new file with mode: 0644]
otto_controller_source/Inc/tf/tfMessage.h [new file with mode: 0644]
otto_controller_source/Inc/tf/transform_broadcaster.h [new file with mode: 0644]
otto_controller_source/Inc/tf2_msgs/FrameGraph.h [new file with mode: 0644]
otto_controller_source/Inc/tf2_msgs/LookupTransformAction.h [new file with mode: 0644]
otto_controller_source/Inc/tf2_msgs/LookupTransformActionFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/tf2_msgs/LookupTransformActionGoal.h [new file with mode: 0644]
otto_controller_source/Inc/tf2_msgs/LookupTransformActionResult.h [new file with mode: 0644]
otto_controller_source/Inc/tf2_msgs/LookupTransformFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/tf2_msgs/LookupTransformGoal.h [new file with mode: 0644]
otto_controller_source/Inc/tf2_msgs/LookupTransformResult.h [new file with mode: 0644]
otto_controller_source/Inc/tf2_msgs/TF2Error.h [new file with mode: 0644]
otto_controller_source/Inc/tf2_msgs/TFMessage.h [new file with mode: 0644]
otto_controller_source/Inc/theora_image_transport/Packet.h [new file with mode: 0644]
otto_controller_source/Inc/topic_tools/DemuxAdd.h [new file with mode: 0644]
otto_controller_source/Inc/topic_tools/DemuxDelete.h [new file with mode: 0644]
otto_controller_source/Inc/topic_tools/DemuxList.h [new file with mode: 0644]
otto_controller_source/Inc/topic_tools/DemuxSelect.h [new file with mode: 0644]
otto_controller_source/Inc/topic_tools/MuxAdd.h [new file with mode: 0644]
otto_controller_source/Inc/topic_tools/MuxDelete.h [new file with mode: 0644]
otto_controller_source/Inc/topic_tools/MuxList.h [new file with mode: 0644]
otto_controller_source/Inc/topic_tools/MuxSelect.h [new file with mode: 0644]
otto_controller_source/Inc/trajectory_msgs/JointTrajectory.h [new file with mode: 0644]
otto_controller_source/Inc/trajectory_msgs/JointTrajectoryPoint.h [new file with mode: 0644]
otto_controller_source/Inc/trajectory_msgs/MultiDOFJointTrajectory.h [new file with mode: 0644]
otto_controller_source/Inc/trajectory_msgs/MultiDOFJointTrajectoryPoint.h [new file with mode: 0644]
otto_controller_source/Inc/turtle_actionlib/ShapeAction.h [new file with mode: 0644]
otto_controller_source/Inc/turtle_actionlib/ShapeActionFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/turtle_actionlib/ShapeActionGoal.h [new file with mode: 0644]
otto_controller_source/Inc/turtle_actionlib/ShapeActionResult.h [new file with mode: 0644]
otto_controller_source/Inc/turtle_actionlib/ShapeFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/turtle_actionlib/ShapeGoal.h [new file with mode: 0644]
otto_controller_source/Inc/turtle_actionlib/ShapeResult.h [new file with mode: 0644]
otto_controller_source/Inc/turtle_actionlib/Velocity.h [new file with mode: 0644]
otto_controller_source/Inc/turtlesim/Color.h [new file with mode: 0644]
otto_controller_source/Inc/turtlesim/Kill.h [new file with mode: 0644]
otto_controller_source/Inc/turtlesim/Pose.h [new file with mode: 0644]
otto_controller_source/Inc/turtlesim/SetPen.h [new file with mode: 0644]
otto_controller_source/Inc/turtlesim/Spawn.h [new file with mode: 0644]
otto_controller_source/Inc/turtlesim/TeleportAbsolute.h [new file with mode: 0644]
otto_controller_source/Inc/turtlesim/TeleportRelative.h [new file with mode: 0644]
otto_controller_source/Inc/visualization_msgs/ImageMarker.h [new file with mode: 0644]
otto_controller_source/Inc/visualization_msgs/InteractiveMarker.h [new file with mode: 0644]
otto_controller_source/Inc/visualization_msgs/InteractiveMarkerControl.h [new file with mode: 0644]
otto_controller_source/Inc/visualization_msgs/InteractiveMarkerFeedback.h [new file with mode: 0644]
otto_controller_source/Inc/visualization_msgs/InteractiveMarkerInit.h [new file with mode: 0644]
otto_controller_source/Inc/visualization_msgs/InteractiveMarkerPose.h [new file with mode: 0644]
otto_controller_source/Inc/visualization_msgs/InteractiveMarkerUpdate.h [new file with mode: 0644]
otto_controller_source/Inc/visualization_msgs/Marker.h [new file with mode: 0644]
otto_controller_source/Inc/visualization_msgs/MarkerArray.h [new file with mode: 0644]
otto_controller_source/Inc/visualization_msgs/MenuEntry.h [new file with mode: 0644]
otto_controller_source/STM32F767ZITX_FLASH.ld
otto_controller_source/Src/duration.cpp [new file with mode: 0644]
otto_controller_source/Src/encoder.cpp [new file with mode: 0644]
otto_controller_source/Src/main.cpp
otto_controller_source/Src/stm32f7xx_hal_msp.c
otto_controller_source/Src/time.cpp [new file with mode: 0644]
otto_controller_source/otto_controller_source.ioc

index e8f25697e3ee54b433211e03aaf3a4fa6255f7b0..ca66fa1d3452d4f6f9b9b66efc9b7b36753a320f 100644 (file)
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
        <storageModule moduleId="org.eclipse.cdt.core.settings">
-               <cconfiguration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1660686100">
-                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1660686100" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+               <cconfiguration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.392773116">
+                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.392773116" moduleId="org.eclipse.cdt.core.settings" name="Debug">
                                <externalSettings/>
                                <extensions>
                                        <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
                                </extensions>
                        </storageModule>
                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
-                               <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1660686100" name="Debug" parent="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug">
-                                       <folderInfo id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1660686100." name="/" resourcePath="">
-                                               <toolChain id="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug.1181666617" name="MCU ARM GCC" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug">
-                                                       <option id="com.st.stm32cube.ide.mcu.option.internal.toolchain.type.1383180405" superClass="com.st.stm32cube.ide.mcu.option.internal.toolchain.type" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.base.gnu-tools-for-stm32" valueType="string"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.option.internal.toolchain.version.428931714" superClass="com.st.stm32cube.ide.mcu.option.internal.toolchain.version" value="7-2018-q2-update" valueType="string"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu.2136256005" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu" value="STM32F767ZITx" valueType="string"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid.384102397" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid" value="0" valueType="string"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid.256735747" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid" value="0" valueType="string"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.1606843602" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.value.fpv5-d16" valueType="enumerated"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.2003464655" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.value.hard" valueType="enumerated"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board.1901649547" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board" value="genericBoard" valueType="string"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults.917283526" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.0 || Debug || true || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.base.gnu-tools-for-stm32 || STM32F767ZITx || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../Inc | ../Drivers/CMSIS/Include | ../Drivers/CMSIS/Device/ST/STM32F7xx/Include | ../Drivers/STM32F7xx_HAL_Driver/Inc | ../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy || ../ ||  || USE_HAL_DRIVER | STM32F767xx ||  || Startup || Drivers | Src ||  || ${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld} || true" valueType="string"/>
-                                                       <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.2032104894" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
-                                                       <builder buildPath="${workspace_loc:/otto_controller_source}/Debug" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.1104102064" managedBuildOn="true" name="Gnu Make Builder.Debug" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.2140587058" name="MCU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.11454745" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.value.g3" valueType="enumerated"/>
-                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.includepaths.1378808840" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.includepaths" valueType="includePath"/>
-                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input.1104071361" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input"/>
+                               <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.392773116" name="Debug" parent="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug">
+                                       <folderInfo id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.392773116." name="/" resourcePath="">
+                                               <toolChain id="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug.2041819863" name="MCU ARM GCC" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.debug">
+                                                       <option id="com.st.stm32cube.ide.mcu.option.internal.toolchain.type.802365112" superClass="com.st.stm32cube.ide.mcu.option.internal.toolchain.type" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.base.gnu-tools-for-stm32" valueType="string"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.option.internal.toolchain.version.753328204" superClass="com.st.stm32cube.ide.mcu.option.internal.toolchain.version" value="7-2018-q2-update" valueType="string"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu.1562333114" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu" value="STM32F767ZITx" valueType="string"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid.1306596553" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid" value="0" valueType="string"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid.444376516" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid" value="0" valueType="string"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.810800857" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.value.fpv5-d16" valueType="enumerated"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.94753586" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.value.hard" valueType="enumerated"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board.2121362351" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board" value="genericBoard" valueType="string"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults.1020143314" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.0 || Debug || true || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.base.gnu-tools-for-stm32 || STM32F767ZITx || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../Inc | ../Drivers/CMSIS/Include | ../Drivers/CMSIS/Device/ST/STM32F7xx/Include | ../Drivers/STM32F7xx_HAL_Driver/Inc | ../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy || ../ ||  || USE_HAL_DRIVER | STM32F767xx ||  || Startup || Drivers | Src ||  || ${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld} || true" valueType="string"/>
+                                                       <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.983860393" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
+                                                       <builder buildPath="${workspace_loc:/otto_controller_source}/Debug" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.243986109" name="Gnu Make Builder.Debug" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.1900459641" name="MCU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.1731353809" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.value.g3" valueType="enumerated"/>
+                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.includepaths.1755960518" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.includepaths" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="../"/>
+                                                               </option>
+                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input.1988500701" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input"/>
                                                        </tool>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.299654497" name="MCU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler">
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.560052047" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.value.g3" valueType="enumerated"/>
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.1694013040" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" useByScannerDiscovery="false"/>
-                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols.583492650" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.865555638" name="MCU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler">
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.1187976591" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.value.g3" valueType="enumerated"/>
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.767327004" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" useByScannerDiscovery="false"/>
+                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols.1825415196" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
                                                                        <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
                                                                        <listOptionValue builtIn="false" value="STM32F767xx"/>
                                                                        <listOptionValue builtIn="false" value="DEBUG"/>
                                                                </option>
-                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths.559187893" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths" useByScannerDiscovery="false" valueType="includePath">
+                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths.1352926856" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths" useByScannerDiscovery="false" valueType="includePath">
                                                                        <listOptionValue builtIn="false" value="../Inc"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F7xx/Include"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy"/>
                                                                </option>
-                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.943278979" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/>
+                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1313427753" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/>
                                                        </tool>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.1987006290" name="MCU G++ Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler">
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.202493362" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.value.g3" valueType="enumerated"/>
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.2060051110" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level" useByScannerDiscovery="false"/>
-                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols.707201173" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.996733141" name="MCU G++ Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler">
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.346482789" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.value.g3" valueType="enumerated"/>
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.160543778" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level" useByScannerDiscovery="false"/>
+                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols.402655153" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
                                                                        <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
                                                                        <listOptionValue builtIn="false" value="STM32F767xx"/>
                                                                        <listOptionValue builtIn="false" value="DEBUG"/>
                                                                </option>
-                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.includepaths.545466522" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.includepaths" useByScannerDiscovery="false" valueType="includePath">
+                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.includepaths.897928007" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.includepaths" useByScannerDiscovery="false" valueType="includePath">
                                                                        <listOptionValue builtIn="false" value="../Inc"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F7xx/Include"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy"/>
                                                                </option>
-                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp.1749679951" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp"/>
+                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp.846234598" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp"/>
                                                        </tool>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.383492384" name="MCU GCC Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker">
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script.1901896838" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script" value="${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld}" valueType="string"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.77566097" name="MCU GCC Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker">
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script.1911986478" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script" value="${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld}" valueType="string"/>
                                                        </tool>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.1563402536" name="MCU G++ Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker">
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.script.1982235080" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.script" value="${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld}" valueType="string"/>
-                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.input.1500182922" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.input">
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.1412377355" name="MCU G++ Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker">
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.script.1698241096" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.script" value="${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld}" valueType="string"/>
+                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.input.201166165" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.input">
                                                                        <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
                                                                        <additionalInput kind="additionalinput" paths="$(LIBS)"/>
                                                                </inputType>
                                                        </tool>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.769690301" name="MCU GCC Archiver" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.1550366101" name="MCU Size" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.381714337" name="MCU Output Converter list file" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.291222517" name="MCU Output Converter Hex" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.1027332670" name="MCU Output Converter Binary" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.562013644" name="MCU Output Converter Verilog" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.1449348587" name="MCU Output Converter Motorola S-rec" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.2062250653" name="MCU Output Converter Motorola S-rec with symbols" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.1021096116" name="MCU GCC Archiver" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.1133700284" name="MCU Size" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.657980404" name="MCU Output Converter list file" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.1788883330" name="MCU Output Converter Hex" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.254728800" name="MCU Output Converter Binary" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.438568399" name="MCU Output Converter Verilog" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.1896903758" name="MCU Output Converter Motorola S-rec" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.1471961284" name="MCU Output Converter Motorola S-rec with symbols" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec"/>
                                                </toolChain>
                                        </folderInfo>
                                        <sourceEntries>
@@ -95,8 +97,8 @@
                        </storageModule>
                        <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
                </cconfiguration>
-               <cconfiguration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1568254800">
-                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1568254800" moduleId="org.eclipse.cdt.core.settings" name="Release">
+               <cconfiguration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.658373970">
+                       <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.658373970" moduleId="org.eclipse.cdt.core.settings" name="Release">
                                <externalSettings/>
                                <extensions>
                                        <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
                                </extensions>
                        </storageModule>
                        <storageModule moduleId="cdtBuildSystem" version="4.0.0">
-                               <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1568254800" name="Release" parent="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release">
-                                       <folderInfo id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1568254800." name="/" resourcePath="">
-                                               <toolChain id="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release.374189171" name="MCU ARM GCC" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release">
-                                                       <option id="com.st.stm32cube.ide.mcu.option.internal.toolchain.type.476667871" superClass="com.st.stm32cube.ide.mcu.option.internal.toolchain.type" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.base.gnu-tools-for-stm32" valueType="string"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.option.internal.toolchain.version.2021961991" superClass="com.st.stm32cube.ide.mcu.option.internal.toolchain.version" value="7-2018-q2-update" valueType="string"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu.2131205276" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu" value="STM32F767ZITx" valueType="string"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid.1316714894" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid" value="0" valueType="string"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid.291784336" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid" value="0" valueType="string"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.171741790" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.value.fpv5-d16" valueType="enumerated"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.1746726579" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.value.hard" valueType="enumerated"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board.815800237" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board" value="genericBoard" valueType="string"/>
-                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults.65714390" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.0 || Release || false || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.base.gnu-tools-for-stm32 || STM32F767ZITx || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../Inc | ../Drivers/CMSIS/Include | ../Drivers/CMSIS/Device/ST/STM32F7xx/Include | ../Drivers/STM32F7xx_HAL_Driver/Inc | ../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy || ../ ||  || USE_HAL_DRIVER | STM32F767xx ||  || Startup || Drivers | Src ||  || ${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld} || true" valueType="string"/>
-                                                       <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.227011496" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
-                                                       <builder buildPath="${workspace_loc:/otto_controller_source}/Release" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.1117475814" managedBuildOn="true" name="Gnu Make Builder.Release" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.1609175313" name="MCU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.1571580748" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.value.g0" valueType="enumerated"/>
-                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.includepaths.1126749739" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.includepaths" valueType="includePath"/>
-                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input.2008153635" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input"/>
+                               <configuration artifactExtension="elf" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.658373970" name="Release" parent="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release">
+                                       <folderInfo id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.658373970." name="/" resourcePath="">
+                                               <toolChain id="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release.1118251392" name="MCU ARM GCC" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.exe.release">
+                                                       <option id="com.st.stm32cube.ide.mcu.option.internal.toolchain.type.1909234318" superClass="com.st.stm32cube.ide.mcu.option.internal.toolchain.type" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.base.gnu-tools-for-stm32" valueType="string"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.option.internal.toolchain.version.1647156367" superClass="com.st.stm32cube.ide.mcu.option.internal.toolchain.version" value="7-2018-q2-update" valueType="string"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu.873517583" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_mcu" value="STM32F767ZITx" valueType="string"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid.10780868" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_cpuid" value="0" valueType="string"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid.1671641280" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_coreid" value="0" valueType="string"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.951416612" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.fpu.value.fpv5-d16" valueType="enumerated"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.1029154631" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.floatabi.value.hard" valueType="enumerated"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board.1961364743" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.target_board" value="genericBoard" valueType="string"/>
+                                                       <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults.1861892626" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.option.defaults" value="com.st.stm32cube.ide.common.services.build.inputs.revA.1.0.0 || Release || false || Executable || com.st.stm32cube.ide.mcu.gnu.managedbuild.toolchain.base.gnu-tools-for-stm32 || STM32F767ZITx || 0 || arm-none-eabi- || ${gnu_tools_for_stm32_compiler_path} || ../Inc | ../Drivers/CMSIS/Include | ../Drivers/CMSIS/Device/ST/STM32F7xx/Include | ../Drivers/STM32F7xx_HAL_Driver/Inc | ../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy || ../ ||  || USE_HAL_DRIVER | STM32F767xx ||  || Startup || Drivers | Src ||  || ${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld} || true" valueType="string"/>
+                                                       <targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform.822901705" isAbstract="false" osList="all" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.targetplatform"/>
+                                                       <builder buildPath="${workspace_loc:/otto_controller_source}/Release" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder.1014969032" managedBuildOn="true" name="Gnu Make Builder.Release" parallelBuildOn="true" parallelizationNumber="optimal" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.builder"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.1292746606" name="MCU GCC Assembler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler">
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.1663320188" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.debuglevel.value.g0" valueType="enumerated"/>
+                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.includepaths.526870196" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.option.includepaths" valueType="includePath">
+                                                                       <listOptionValue builtIn="false" value="../"/>
+                                                               </option>
+                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input.1746253654" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.assembler.input"/>
                                                        </tool>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.2000001301" name="MCU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler">
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.1058668900" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.value.g0" valueType="enumerated"/>
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.57777716" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.value.o3" valueType="enumerated"/>
-                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols.78797125" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1095556557" name="MCU GCC Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler">
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.1273271907" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.debuglevel.value.g0" valueType="enumerated"/>
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.1480372733" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.optimization.level.value.o3" valueType="enumerated"/>
+                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols.1650510654" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
                                                                        <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
                                                                        <listOptionValue builtIn="false" value="STM32F767xx"/>
                                                                </option>
-                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths.1627724011" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths" useByScannerDiscovery="false" valueType="includePath">
+                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths.1144360222" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.includepaths" useByScannerDiscovery="false" valueType="includePath">
                                                                        <listOptionValue builtIn="false" value="../Inc"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F7xx/Include"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy"/>
                                                                </option>
-                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1322550885" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/>
+                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1691486409" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/>
                                                        </tool>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.698675919" name="MCU G++ Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler">
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.1692992492" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.value.g0" valueType="enumerated"/>
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.101538503" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.value.o3" valueType="enumerated"/>
-                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols.650599796" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.1161486784" name="MCU G++ Compiler" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler">
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.1133832419" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.debuglevel.value.g0" valueType="enumerated"/>
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.1265912650" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.optimization.level.value.o3" valueType="enumerated"/>
+                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols.964369554" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
                                                                        <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
                                                                        <listOptionValue builtIn="false" value="STM32F767xx"/>
                                                                </option>
-                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.includepaths.227025765" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.includepaths" useByScannerDiscovery="false" valueType="includePath">
+                                                               <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.includepaths.1099329012" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.includepaths" useByScannerDiscovery="false" valueType="includePath">
                                                                        <listOptionValue builtIn="false" value="../Inc"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/CMSIS/Include"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F7xx/Include"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy"/>
                                                                </option>
-                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp.1427310793" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp"/>
+                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp.1392539340" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp"/>
                                                        </tool>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.1857014573" name="MCU GCC Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker">
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script.657787663" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script" value="${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld}" valueType="string"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.2135262324" name="MCU GCC Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker">
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script.1292473114" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.linker.option.script" value="${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld}" valueType="string"/>
                                                        </tool>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.1312029931" name="MCU G++ Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker">
-                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.script.857749903" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.script" value="${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld}" valueType="string"/>
-                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.input.51696347" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.input">
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.1495651395" name="MCU G++ Linker" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker">
+                                                               <option id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.script.572248369" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.option.script" value="${workspace_loc:/${ProjName}/STM32F767ZITX_FLASH.ld}" valueType="string"/>
+                                                               <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.input.589599092" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.linker.input">
                                                                        <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
                                                                        <additionalInput kind="additionalinput" paths="$(LIBS)"/>
                                                                </inputType>
                                                        </tool>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.9217580" name="MCU GCC Archiver" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.262924859" name="MCU Size" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.386625934" name="MCU Output Converter list file" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.1612398627" name="MCU Output Converter Hex" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.1108725379" name="MCU Output Converter Binary" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.797736051" name="MCU Output Converter Verilog" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.1629495026" name="MCU Output Converter Motorola S-rec" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec"/>
-                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.83293637" name="MCU Output Converter Motorola S-rec with symbols" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver.852489426" name="MCU GCC Archiver" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.archiver"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size.1920784775" name="MCU Size" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.size"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile.1047156682" name="MCU Output Converter list file" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objdump.listfile"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex.223864949" name="MCU Output Converter Hex" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.hex"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary.101012123" name="MCU Output Converter Binary" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.binary"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog.1150878587" name="MCU Output Converter Verilog" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.verilog"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec.70193134" name="MCU Output Converter Motorola S-rec" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.srec"/>
+                                                       <tool id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec.1452833368" name="MCU Output Converter Motorola S-rec with symbols" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.objcopy.symbolsrec"/>
                                                </toolChain>
                                        </folderInfo>
                                        <sourceEntries>
        </storageModule>
        <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
        <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+       <storageModule moduleId="refreshScope"/>
+       <storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
        <storageModule moduleId="scannerConfiguration">
                <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
                <scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1660686100;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1660686100.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.1987006290;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp.1749679951">
                <scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1568254800;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1568254800.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.2000001301;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1322550885">
                        <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
                </scannerConfigBuildInfo>
+               <scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.658373970;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.658373970.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.1095556557;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1691486409">
+                       <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
+               <scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.392773116;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.392773116.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.996733141;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp.846234598">
+                       <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
                <scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1660686100;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1660686100.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.299654497;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.943278979">
                        <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
                </scannerConfigBuildInfo>
                <scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1568254800;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1568254800.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.698675919;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp.1427310793">
                        <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
                </scannerConfigBuildInfo>
+               <scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.392773116;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.392773116.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.865555638;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1313427753">
+                       <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
+               <scannerConfigBuildInfo instanceId="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.658373970;com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.658373970.;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.1161486784;com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.input.cpp.1392539340">
+                       <autodiscovery enabled="false" problemReportingEnabled="true" selectedProfileId=""/>
+               </scannerConfigBuildInfo>
        </storageModule>
-       <storageModule moduleId="refreshScope"/>
-       <storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
 </cproject>
index 4dbda2a2e8ee531cc0fa38c2e4fa425d7d5f3a25..318a89afdd2187f6b36a5fa777291be0d434d2aa 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <project>
-       <configuration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.1660686100" name="Debug">
+       <configuration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.debug.392773116" name="Debug">
                <extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
                        <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
                        <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
@@ -12,7 +12,7 @@
                        </provider>
                </extension>
        </configuration>
-       <configuration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.1568254800" name="Release">
+       <configuration id="com.st.stm32cube.ide.mcu.gnu.managedbuild.config.exe.release.658373970" name="Release">
                <extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
                        <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
                        <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
index 3461931458ec4cdc0b699f86ebf19389c7e501ec..14b95a2fbb1f4cc735605a3300ebfdd461b4c78c 100644 (file)
@@ -11,15 +11,21 @@ C_SRCS += \
 ../Src/system_stm32f7xx.c 
 
 CPP_SRCS += \
-../Src/main.cpp 
+../Src/duration.cpp \
+../Src/encoder.cpp \
+../Src/main.cpp \
+../Src/time.cpp 
 
 OBJS += \
+./Src/duration.o \
+./Src/encoder.o \
 ./Src/main.o \
 ./Src/stm32f7xx_hal_msp.o \
 ./Src/stm32f7xx_it.o \
 ./Src/syscalls.o \
 ./Src/sysmem.o \
-./Src/system_stm32f7xx.o 
+./Src/system_stm32f7xx.o \
+./Src/time.o 
 
 C_DEPS += \
 ./Src/stm32f7xx_hal_msp.d \
@@ -29,10 +35,17 @@ C_DEPS += \
 ./Src/system_stm32f7xx.d 
 
 CPP_DEPS += \
-./Src/main.d 
+./Src/duration.d \
+./Src/encoder.d \
+./Src/main.d \
+./Src/time.d 
 
 
 # Each subdirectory must supply rules for building sources it contributes
+Src/duration.o: ../Src/duration.cpp
+       arm-none-eabi-g++ "$<" -mcpu=cortex-m7 -std=gnu++14 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-threadsafe-statics -fno-use-cxa-atexit -Wall -fstack-usage -MMD -MP -MF"Src/duration.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+Src/encoder.o: ../Src/encoder.cpp
+       arm-none-eabi-g++ "$<" -mcpu=cortex-m7 -std=gnu++14 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-threadsafe-statics -fno-use-cxa-atexit -Wall -fstack-usage -MMD -MP -MF"Src/encoder.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 Src/main.o: ../Src/main.cpp
        arm-none-eabi-g++ "$<" -mcpu=cortex-m7 -std=gnu++14 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-threadsafe-statics -fno-use-cxa-atexit -Wall -fstack-usage -MMD -MP -MF"Src/main.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 Src/stm32f7xx_hal_msp.o: ../Src/stm32f7xx_hal_msp.c
@@ -45,4 +58,6 @@ Src/sysmem.o: ../Src/sysmem.c
        arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Src/sysmem.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 Src/system_stm32f7xx.o: ../Src/system_stm32f7xx.c
        arm-none-eabi-gcc "$<" -mcpu=cortex-m7 -std=gnu11 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -Wall -fstack-usage -MMD -MP -MF"Src/system_stm32f7xx.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
+Src/time.o: ../Src/time.cpp
+       arm-none-eabi-g++ "$<" -mcpu=cortex-m7 -std=gnu++14 -g3 -DUSE_HAL_DRIVER -DSTM32F767xx -DDEBUG -c -I../Inc -I../Drivers/CMSIS/Include -I../Drivers/CMSIS/Device/ST/STM32F7xx/Include -I../Drivers/STM32F7xx_HAL_Driver/Inc -I../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy -O0 -ffunction-sections -fdata-sections -fno-exceptions -fno-rtti -fno-threadsafe-statics -fno-use-cxa-atexit -Wall -fstack-usage -MMD -MP -MF"Src/time.d" -MT"$@" --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@"
 
index b7bc34d1b4573b3d804bc6552b52acf4e8a6db5f..6d369287a1b75bd123c0a0fc77a5b4312251db85 100644 (file)
@@ -12,5 +12,5 @@ OBJS += \
 
 # Each subdirectory must supply rules for building sources it contributes
 Startup/%.o: ../Startup/%.s
-       arm-none-eabi-gcc -mcpu=cortex-m7 -g3 -c -x assembler-with-cpp --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@" "$<"
+       arm-none-eabi-gcc -mcpu=cortex-m7 -g3 -c -I../ -x assembler-with-cpp --specs=nano.specs -mfpu=fpv5-d16 -mfloat-abi=hard -mthumb -o "$@" "$<"
 
index b4c2b34c760e6b98a92937c4813e923d6e264b3e..01e890442fcc813464ee0299428b693669351e03 100644 (file)
 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.o"
 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.o"
 "Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart_ex.o"
+"Src/duration.o"
+"Src/encoder.o"
 "Src/main.o"
 "Src/stm32f7xx_hal_msp.o"
 "Src/stm32f7xx_it.o"
 "Src/syscalls.o"
 "Src/sysmem.o"
 "Src/system_stm32f7xx.o"
+"Src/time.o"
 "Startup/startup_stm32f767zitx.o"
index 66a1b7f3b5f45b8a6436f917b3e2c46276876268..2e0943079229553a60400655b5d19b2e46339b54 100644 (file)
@@ -5,45 +5,45 @@ Sections:
 Idx Name          Size      VMA       LMA       File off  Algn
   0 .isr_vector   000001f8  08000000  08000000  00010000  2**0
                   CONTENTS, ALLOC, LOAD, READONLY, DATA
-  1 .text         00003104  080001f8  080001f8  000101f8  2**2
+  1 .text         0000357c  080001f8  080001f8  000101f8  2**2
                   CONTENTS, ALLOC, LOAD, READONLY, CODE
-  2 .rodata       00000020  080032fc  080032fc  000132fc  2**2
+  2 .rodata       00000020  08003774  08003774  00013774  2**2
                   CONTENTS, ALLOC, LOAD, READONLY, DATA
-  3 .ARM.extab    00000000  0800331c  0800331c  0002000c  2**0
+  3 .ARM.extab    00000000  08003794  08003794  0002000c  2**0
                   CONTENTS
-  4 .ARM          00000008  0800331c  0800331c  0001331c  2**2
+  4 .ARM          00000008  08003794  08003794  00013794  2**2
                   CONTENTS, ALLOC, LOAD, READONLY, DATA
-  5 .preinit_array 00000000  08003324  08003324  0002000c  2**0
+  5 .preinit_array 00000000  0800379c  0800379c  0002000c  2**0
                   CONTENTS, ALLOC, LOAD, DATA
-  6 .init_array   00000004  08003324  08003324  00013324  2**2
+  6 .init_array   00000004  0800379c  0800379c  0001379c  2**2
                   CONTENTS, ALLOC, LOAD, DATA
-  7 .fini_array   00000004  08003328  08003328  00013328  2**2
+  7 .fini_array   00000004  080037a0  080037a0  000137a0  2**2
                   CONTENTS, ALLOC, LOAD, DATA
-  8 .data         0000000c  20000000  0800332c  00020000  2**2
+  8 .data         0000000c  20000000  080037a4  00020000  2**2
                   CONTENTS, ALLOC, LOAD, DATA
-  9 .bss          00000160  2000000c  08003338  0002000c  2**2
+  9 .bss          000001a0  2000000c  080037b0  0002000c  2**2
                   ALLOC
- 10 ._user_heap_stack 00000604  2000016c  08003338  0002016c  2**0
+ 10 ._user_heap_stack 00000604  200001ac  080037b0  000201ac  2**0
                   ALLOC
  11 .ARM.attributes 0000002e  00000000  00000000  0002000c  2**0
                   CONTENTS, READONLY
- 12 .debug_info   000080cc  00000000  00000000  0002003a  2**0
+ 12 .debug_info   0000c0d2  00000000  00000000  0002003a  2**0
                   CONTENTS, READONLY, DEBUGGING
- 13 .debug_abbrev 00001505  00000000  00000000  00028106  2**0
+ 13 .debug_abbrev 00001986  00000000  00000000  0002c10c  2**0
                   CONTENTS, READONLY, DEBUGGING
- 14 .debug_aranges 00000720  00000000  00000000  00029610  2**3
+ 14 .debug_aranges 00000c58  00000000  00000000  0002da98  2**3
                   CONTENTS, READONLY, DEBUGGING
- 15 .debug_ranges 00000668  00000000  00000000  00029d30  2**3
+ 15 .debug_ranges 00000b80  00000000  00000000  0002e6f0  2**3
                   CONTENTS, READONLY, DEBUGGING
- 16 .debug_macro  00026fb9  00000000  00000000  0002a398  2**0
+ 16 .debug_macro  0002722c  00000000  00000000  0002f270  2**0
                   CONTENTS, READONLY, DEBUGGING
- 17 .debug_line   00006499  00000000  00000000  00051351  2**0
+ 17 .debug_line   00008e9c  00000000  00000000  0005649c  2**0
                   CONTENTS, READONLY, DEBUGGING
- 18 .debug_str    000e84f3  00000000  00000000  000577ea  2**0
+ 18 .debug_str    000f12d5  00000000  00000000  0005f338  2**0
                   CONTENTS, READONLY, DEBUGGING
- 19 .comment      0000007b  00000000  00000000  0013fcdd  2**0
+ 19 .comment      0000007b  00000000  00000000  0015060d  2**0
                   CONTENTS, READONLY
- 20 .debug_frame  00001be8  00000000  00000000  0013fd58  2**2
+ 20 .debug_frame  000033d0  00000000  00000000  00150688  2**2
                   CONTENTS, READONLY, DEBUGGING
 
 Disassembly of section .text:
@@ -62,7 +62,7 @@ Disassembly of section .text:
  800020e:      bd10            pop     {r4, pc}
  8000210:      2000000c        .word   0x2000000c
  8000214:      00000000        .word   0x00000000
- 8000218:      080032e4        .word   0x080032e4
+ 8000218:      0800375c        .word   0x0800375c
 
 0800021c <frame_dummy>:
  800021c:      b508            push    {r3, lr}
@@ -74,7 +74,7 @@ Disassembly of section .text:
  800022a:      bd08            pop     {r3, pc}
  800022c:      00000000        .word   0x00000000
  8000230:      20000010        .word   0x20000010
- 8000234:      080032e4        .word   0x080032e4
+ 8000234:      0800375c        .word   0x0800375c
 
 08000238 <__aeabi_uldivmod>:
  8000238:      b953            cbnz    r3, 8000250 <__aeabi_uldivmod+0x18>
@@ -378,7 +378,7 @@ HAL_StatusTypeDef HAL_Init(void)
   
   /* Init the low level hardware */
   HAL_MspInit();
- 8000548:      f002 fd1c       bl      8002f84 <HAL_MspInit>
+ 8000548:      f002 ff16       bl      8003378 <HAL_MspInit>
   
   /* Return function status */
   return HAL_OK;
@@ -479,7 +479,7 @@ __weak void HAL_IncTick(void)
  80005d0:      4770            bx      lr
  80005d2:      bf00            nop
  80005d4:      20000004        .word   0x20000004
- 80005d8:      20000168        .word   0x20000168
+ 80005d8:      200001a8        .word   0x200001a8
 
 080005dc <HAL_GetTick>:
   * @note This function is declared as __weak to be overwritten in case of other 
@@ -499,7 +499,7 @@ __weak uint32_t HAL_GetTick(void)
  80005e8:      f85d 7b04       ldr.w   r7, [sp], #4
  80005ec:      4770            bx      lr
  80005ee:      bf00            nop
- 80005f0:      20000168        .word   0x20000168
+ 80005f0:      200001a8        .word   0x200001a8
 
 080005f4 <__NVIC_SetPriorityGrouping>:
            In case of a conflict between priority grouping and available
@@ -1883,7 +1883,7 @@ static uint32_t DMA_CalcBaseAndBitshift(DMA_HandleTypeDef *hdma)
  8000d28:      4770            bx      lr
  8000d2a:      bf00            nop
  8000d2c:      aaaaaaab        .word   0xaaaaaaab
- 8000d30:      080032fc        .word   0x080032fc
+ 8000d30:      08003774        .word   0x08003774
  8000d34:      fffffc00        .word   0xfffffc00
 
 08000d38 <DMA_CheckFifoParam>:
@@ -3772,7 +3772,7 @@ HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef  *RCC_ClkInitStruct, ui
  8001822:      bf00            nop
  8001824:      40023c00        .word   0x40023c00
  8001828:      40023800        .word   0x40023800
- 800182c:      08003304        .word   0x08003304
+ 800182c:      0800377c        .word   0x0800377c
  8001830:      20000008        .word   0x20000008
 
 08001834 <HAL_RCC_GetSysClockFreq>:
@@ -4008,7 +4008,7 @@ uint32_t HAL_RCC_GetPCLK1Freq(void)
  80019cc:      4618            mov     r0, r3
  80019ce:      bd80            pop     {r7, pc}
  80019d0:      40023800        .word   0x40023800
- 80019d4:      08003314        .word   0x08003314
+ 80019d4:      0800378c        .word   0x0800378c
 
 080019d8 <HAL_RCC_GetPCLK2Freq>:
   * @note   Each time PCLK2 changes, this function must be called to update the
@@ -4034,7 +4034,7 @@ uint32_t HAL_RCC_GetPCLK2Freq(void)
  80019f4:      4618            mov     r0, r3
  80019f6:      bd80            pop     {r7, pc}
  80019f8:      40023800        .word   0x40023800
- 80019fc:      08003314        .word   0x08003314
+ 80019fc:      0800378c        .word   0x0800378c
 
 08001a00 <HAL_RCCEx_PeriphCLKConfig>:
   *         the backup registers) are set to their reset values.
@@ -5451,2924 +5451,3709 @@ HAL_StatusTypeDef HAL_RCCEx_PeriphCLKConfig(RCC_PeriphCLKInitTypeDef  *PeriphClk
  8002246:      bf00            nop
  8002248:      40023800        .word   0x40023800
 
-0800224c <HAL_UART_Init>:
-  *        parameters in the UART_InitTypeDef and initialize the associated handle.
-  * @param huart UART handle.
+0800224c <HAL_TIM_Encoder_Init>:
+  * @param  htim TIM Encoder Interface handle
+  * @param  sConfig TIM Encoder Interface configuration structure
   * @retval HAL status
   */
-HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart)
+HAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim,  TIM_Encoder_InitTypeDef *sConfig)
 {
  800224c:      b580            push    {r7, lr}
- 800224e:      b082            sub     sp, #8
+ 800224e:      b086            sub     sp, #24
  8002250:      af00            add     r7, sp, #0
  8002252:      6078            str     r0, [r7, #4]
+ 8002254:      6039            str     r1, [r7, #0]
+  uint32_t tmpsmcr;
+  uint32_t tmpccmr1;
+  uint32_t tmpccer;
+
+  /* Check the TIM handle allocation */
+  if (htim == NULL)
+ 8002256:      687b            ldr     r3, [r7, #4]
+ 8002258:      2b00            cmp     r3, #0
+ 800225a:      d101            bne.n   8002260 <HAL_TIM_Encoder_Init+0x14>
+  {
+    return HAL_ERROR;
+ 800225c:      2301            movs    r3, #1
+ 800225e:      e07b            b.n     8002358 <HAL_TIM_Encoder_Init+0x10c>
+  assert_param(IS_TIM_IC_PRESCALER(sConfig->IC1Prescaler));
+  assert_param(IS_TIM_IC_PRESCALER(sConfig->IC2Prescaler));
+  assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter));
+  assert_param(IS_TIM_IC_FILTER(sConfig->IC2Filter));
+
+  if (htim->State == HAL_TIM_STATE_RESET)
+ 8002260:      687b            ldr     r3, [r7, #4]
+ 8002262:      f893 303d       ldrb.w  r3, [r3, #61]   ; 0x3d
+ 8002266:      b2db            uxtb    r3, r3
+ 8002268:      2b00            cmp     r3, #0
+ 800226a:      d106            bne.n   800227a <HAL_TIM_Encoder_Init+0x2e>
+  {
+    /* Allocate lock resource and initialize it */
+    htim->Lock = HAL_UNLOCKED;
+ 800226c:      687b            ldr     r3, [r7, #4]
+ 800226e:      2200            movs    r2, #0
+ 8002270:      f883 203c       strb.w  r2, [r3, #60]   ; 0x3c
+    }
+    /* Init the low level hardware : GPIO, CLOCK, NVIC */
+    htim->Encoder_MspInitCallback(htim);
+#else
+    /* Init the low level hardware : GPIO, CLOCK, NVIC and DMA */
+    HAL_TIM_Encoder_MspInit(htim);
+ 8002274:      6878            ldr     r0, [r7, #4]
+ 8002276:      f001 f8a3       bl      80033c0 <HAL_TIM_Encoder_MspInit>
+#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
+  }
+
+  /* Set the TIM state */
+  htim->State = HAL_TIM_STATE_BUSY;
+ 800227a:      687b            ldr     r3, [r7, #4]
+ 800227c:      2202            movs    r2, #2
+ 800227e:      f883 203d       strb.w  r2, [r3, #61]   ; 0x3d
+
+  /* Reset the SMS and ECE bits */
+  htim->Instance->SMCR &= ~(TIM_SMCR_SMS | TIM_SMCR_ECE);
+ 8002282:      687b            ldr     r3, [r7, #4]
+ 8002284:      681b            ldr     r3, [r3, #0]
+ 8002286:      6899            ldr     r1, [r3, #8]
+ 8002288:      687b            ldr     r3, [r7, #4]
+ 800228a:      681a            ldr     r2, [r3, #0]
+ 800228c:      4b34            ldr     r3, [pc, #208]  ; (8002360 <HAL_TIM_Encoder_Init+0x114>)
+ 800228e:      400b            ands    r3, r1
+ 8002290:      6093            str     r3, [r2, #8]
+
+  /* Configure the Time base in the Encoder Mode */
+  TIM_Base_SetConfig(htim->Instance, &htim->Init);
+ 8002292:      687b            ldr     r3, [r7, #4]
+ 8002294:      681a            ldr     r2, [r3, #0]
+ 8002296:      687b            ldr     r3, [r7, #4]
+ 8002298:      3304            adds    r3, #4
+ 800229a:      4619            mov     r1, r3
+ 800229c:      4610            mov     r0, r2
+ 800229e:      f000 f867       bl      8002370 <TIM_Base_SetConfig>
+
+  /* Get the TIMx SMCR register value */
+  tmpsmcr = htim->Instance->SMCR;
+ 80022a2:      687b            ldr     r3, [r7, #4]
+ 80022a4:      681b            ldr     r3, [r3, #0]
+ 80022a6:      689b            ldr     r3, [r3, #8]
+ 80022a8:      617b            str     r3, [r7, #20]
+
+  /* Get the TIMx CCMR1 register value */
+  tmpccmr1 = htim->Instance->CCMR1;
+ 80022aa:      687b            ldr     r3, [r7, #4]
+ 80022ac:      681b            ldr     r3, [r3, #0]
+ 80022ae:      699b            ldr     r3, [r3, #24]
+ 80022b0:      613b            str     r3, [r7, #16]
+
+  /* Get the TIMx CCER register value */
+  tmpccer = htim->Instance->CCER;
+ 80022b2:      687b            ldr     r3, [r7, #4]
+ 80022b4:      681b            ldr     r3, [r3, #0]
+ 80022b6:      6a1b            ldr     r3, [r3, #32]
+ 80022b8:      60fb            str     r3, [r7, #12]
+
+  /* Set the encoder Mode */
+  tmpsmcr |= sConfig->EncoderMode;
+ 80022ba:      683b            ldr     r3, [r7, #0]
+ 80022bc:      681b            ldr     r3, [r3, #0]
+ 80022be:      697a            ldr     r2, [r7, #20]
+ 80022c0:      4313            orrs    r3, r2
+ 80022c2:      617b            str     r3, [r7, #20]
+
+  /* Select the Capture Compare 1 and the Capture Compare 2 as input */
+  tmpccmr1 &= ~(TIM_CCMR1_CC1S | TIM_CCMR1_CC2S);
+ 80022c4:      693a            ldr     r2, [r7, #16]
+ 80022c6:      4b27            ldr     r3, [pc, #156]  ; (8002364 <HAL_TIM_Encoder_Init+0x118>)
+ 80022c8:      4013            ands    r3, r2
+ 80022ca:      613b            str     r3, [r7, #16]
+  tmpccmr1 |= (sConfig->IC1Selection | (sConfig->IC2Selection << 8U));
+ 80022cc:      683b            ldr     r3, [r7, #0]
+ 80022ce:      689a            ldr     r2, [r3, #8]
+ 80022d0:      683b            ldr     r3, [r7, #0]
+ 80022d2:      699b            ldr     r3, [r3, #24]
+ 80022d4:      021b            lsls    r3, r3, #8
+ 80022d6:      4313            orrs    r3, r2
+ 80022d8:      693a            ldr     r2, [r7, #16]
+ 80022da:      4313            orrs    r3, r2
+ 80022dc:      613b            str     r3, [r7, #16]
+
+  /* Set the Capture Compare 1 and the Capture Compare 2 prescalers and filters */
+  tmpccmr1 &= ~(TIM_CCMR1_IC1PSC | TIM_CCMR1_IC2PSC);
+ 80022de:      693a            ldr     r2, [r7, #16]
+ 80022e0:      4b21            ldr     r3, [pc, #132]  ; (8002368 <HAL_TIM_Encoder_Init+0x11c>)
+ 80022e2:      4013            ands    r3, r2
+ 80022e4:      613b            str     r3, [r7, #16]
+  tmpccmr1 &= ~(TIM_CCMR1_IC1F | TIM_CCMR1_IC2F);
+ 80022e6:      693a            ldr     r2, [r7, #16]
+ 80022e8:      4b20            ldr     r3, [pc, #128]  ; (800236c <HAL_TIM_Encoder_Init+0x120>)
+ 80022ea:      4013            ands    r3, r2
+ 80022ec:      613b            str     r3, [r7, #16]
+  tmpccmr1 |= sConfig->IC1Prescaler | (sConfig->IC2Prescaler << 8U);
+ 80022ee:      683b            ldr     r3, [r7, #0]
+ 80022f0:      68da            ldr     r2, [r3, #12]
+ 80022f2:      683b            ldr     r3, [r7, #0]
+ 80022f4:      69db            ldr     r3, [r3, #28]
+ 80022f6:      021b            lsls    r3, r3, #8
+ 80022f8:      4313            orrs    r3, r2
+ 80022fa:      693a            ldr     r2, [r7, #16]
+ 80022fc:      4313            orrs    r3, r2
+ 80022fe:      613b            str     r3, [r7, #16]
+  tmpccmr1 |= (sConfig->IC1Filter << 4U) | (sConfig->IC2Filter << 12U);
+ 8002300:      683b            ldr     r3, [r7, #0]
+ 8002302:      691b            ldr     r3, [r3, #16]
+ 8002304:      011a            lsls    r2, r3, #4
+ 8002306:      683b            ldr     r3, [r7, #0]
+ 8002308:      6a1b            ldr     r3, [r3, #32]
+ 800230a:      031b            lsls    r3, r3, #12
+ 800230c:      4313            orrs    r3, r2
+ 800230e:      693a            ldr     r2, [r7, #16]
+ 8002310:      4313            orrs    r3, r2
+ 8002312:      613b            str     r3, [r7, #16]
+
+  /* Set the TI1 and the TI2 Polarities */
+  tmpccer &= ~(TIM_CCER_CC1P | TIM_CCER_CC2P);
+ 8002314:      68fb            ldr     r3, [r7, #12]
+ 8002316:      f023 0322       bic.w   r3, r3, #34     ; 0x22
+ 800231a:      60fb            str     r3, [r7, #12]
+  tmpccer &= ~(TIM_CCER_CC1NP | TIM_CCER_CC2NP);
+ 800231c:      68fb            ldr     r3, [r7, #12]
+ 800231e:      f023 0388       bic.w   r3, r3, #136    ; 0x88
+ 8002322:      60fb            str     r3, [r7, #12]
+  tmpccer |= sConfig->IC1Polarity | (sConfig->IC2Polarity << 4U);
+ 8002324:      683b            ldr     r3, [r7, #0]
+ 8002326:      685a            ldr     r2, [r3, #4]
+ 8002328:      683b            ldr     r3, [r7, #0]
+ 800232a:      695b            ldr     r3, [r3, #20]
+ 800232c:      011b            lsls    r3, r3, #4
+ 800232e:      4313            orrs    r3, r2
+ 8002330:      68fa            ldr     r2, [r7, #12]
+ 8002332:      4313            orrs    r3, r2
+ 8002334:      60fb            str     r3, [r7, #12]
+
+  /* Write to TIMx SMCR */
+  htim->Instance->SMCR = tmpsmcr;
+ 8002336:      687b            ldr     r3, [r7, #4]
+ 8002338:      681b            ldr     r3, [r3, #0]
+ 800233a:      697a            ldr     r2, [r7, #20]
+ 800233c:      609a            str     r2, [r3, #8]
+
+  /* Write to TIMx CCMR1 */
+  htim->Instance->CCMR1 = tmpccmr1;
+ 800233e:      687b            ldr     r3, [r7, #4]
+ 8002340:      681b            ldr     r3, [r3, #0]
+ 8002342:      693a            ldr     r2, [r7, #16]
+ 8002344:      619a            str     r2, [r3, #24]
+
+  /* Write to TIMx CCER */
+  htim->Instance->CCER = tmpccer;
+ 8002346:      687b            ldr     r3, [r7, #4]
+ 8002348:      681b            ldr     r3, [r3, #0]
+ 800234a:      68fa            ldr     r2, [r7, #12]
+ 800234c:      621a            str     r2, [r3, #32]
+
+  /* Initialize the TIM state*/
+  htim->State = HAL_TIM_STATE_READY;
+ 800234e:      687b            ldr     r3, [r7, #4]
+ 8002350:      2201            movs    r2, #1
+ 8002352:      f883 203d       strb.w  r2, [r3, #61]   ; 0x3d
+
+  return HAL_OK;
+ 8002356:      2300            movs    r3, #0
+}
+ 8002358:      4618            mov     r0, r3
+ 800235a:      3718            adds    r7, #24
+ 800235c:      46bd            mov     sp, r7
+ 800235e:      bd80            pop     {r7, pc}
+ 8002360:      fffebff8        .word   0xfffebff8
+ 8002364:      fffffcfc        .word   0xfffffcfc
+ 8002368:      fffff3f3        .word   0xfffff3f3
+ 800236c:      ffff0f0f        .word   0xffff0f0f
+
+08002370 <TIM_Base_SetConfig>:
+  * @param  TIMx TIM peripheral
+  * @param  Structure TIM Base configuration structure
+  * @retval None
+  */
+void TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure)
+{
+ 8002370:      b480            push    {r7}
+ 8002372:      b085            sub     sp, #20
+ 8002374:      af00            add     r7, sp, #0
+ 8002376:      6078            str     r0, [r7, #4]
+ 8002378:      6039            str     r1, [r7, #0]
+  uint32_t tmpcr1;
+  tmpcr1 = TIMx->CR1;
+ 800237a:      687b            ldr     r3, [r7, #4]
+ 800237c:      681b            ldr     r3, [r3, #0]
+ 800237e:      60fb            str     r3, [r7, #12]
+
+  /* Set TIM Time Base Unit parameters ---------------------------------------*/
+  if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx))
+ 8002380:      687b            ldr     r3, [r7, #4]
+ 8002382:      4a40            ldr     r2, [pc, #256]  ; (8002484 <TIM_Base_SetConfig+0x114>)
+ 8002384:      4293            cmp     r3, r2
+ 8002386:      d013            beq.n   80023b0 <TIM_Base_SetConfig+0x40>
+ 8002388:      687b            ldr     r3, [r7, #4]
+ 800238a:      f1b3 4f80       cmp.w   r3, #1073741824 ; 0x40000000
+ 800238e:      d00f            beq.n   80023b0 <TIM_Base_SetConfig+0x40>
+ 8002390:      687b            ldr     r3, [r7, #4]
+ 8002392:      4a3d            ldr     r2, [pc, #244]  ; (8002488 <TIM_Base_SetConfig+0x118>)
+ 8002394:      4293            cmp     r3, r2
+ 8002396:      d00b            beq.n   80023b0 <TIM_Base_SetConfig+0x40>
+ 8002398:      687b            ldr     r3, [r7, #4]
+ 800239a:      4a3c            ldr     r2, [pc, #240]  ; (800248c <TIM_Base_SetConfig+0x11c>)
+ 800239c:      4293            cmp     r3, r2
+ 800239e:      d007            beq.n   80023b0 <TIM_Base_SetConfig+0x40>
+ 80023a0:      687b            ldr     r3, [r7, #4]
+ 80023a2:      4a3b            ldr     r2, [pc, #236]  ; (8002490 <TIM_Base_SetConfig+0x120>)
+ 80023a4:      4293            cmp     r3, r2
+ 80023a6:      d003            beq.n   80023b0 <TIM_Base_SetConfig+0x40>
+ 80023a8:      687b            ldr     r3, [r7, #4]
+ 80023aa:      4a3a            ldr     r2, [pc, #232]  ; (8002494 <TIM_Base_SetConfig+0x124>)
+ 80023ac:      4293            cmp     r3, r2
+ 80023ae:      d108            bne.n   80023c2 <TIM_Base_SetConfig+0x52>
+  {
+    /* Select the Counter Mode */
+    tmpcr1 &= ~(TIM_CR1_DIR | TIM_CR1_CMS);
+ 80023b0:      68fb            ldr     r3, [r7, #12]
+ 80023b2:      f023 0370       bic.w   r3, r3, #112    ; 0x70
+ 80023b6:      60fb            str     r3, [r7, #12]
+    tmpcr1 |= Structure->CounterMode;
+ 80023b8:      683b            ldr     r3, [r7, #0]
+ 80023ba:      685b            ldr     r3, [r3, #4]
+ 80023bc:      68fa            ldr     r2, [r7, #12]
+ 80023be:      4313            orrs    r3, r2
+ 80023c0:      60fb            str     r3, [r7, #12]
+  }
+
+  if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx))
+ 80023c2:      687b            ldr     r3, [r7, #4]
+ 80023c4:      4a2f            ldr     r2, [pc, #188]  ; (8002484 <TIM_Base_SetConfig+0x114>)
+ 80023c6:      4293            cmp     r3, r2
+ 80023c8:      d02b            beq.n   8002422 <TIM_Base_SetConfig+0xb2>
+ 80023ca:      687b            ldr     r3, [r7, #4]
+ 80023cc:      f1b3 4f80       cmp.w   r3, #1073741824 ; 0x40000000
+ 80023d0:      d027            beq.n   8002422 <TIM_Base_SetConfig+0xb2>
+ 80023d2:      687b            ldr     r3, [r7, #4]
+ 80023d4:      4a2c            ldr     r2, [pc, #176]  ; (8002488 <TIM_Base_SetConfig+0x118>)
+ 80023d6:      4293            cmp     r3, r2
+ 80023d8:      d023            beq.n   8002422 <TIM_Base_SetConfig+0xb2>
+ 80023da:      687b            ldr     r3, [r7, #4]
+ 80023dc:      4a2b            ldr     r2, [pc, #172]  ; (800248c <TIM_Base_SetConfig+0x11c>)
+ 80023de:      4293            cmp     r3, r2
+ 80023e0:      d01f            beq.n   8002422 <TIM_Base_SetConfig+0xb2>
+ 80023e2:      687b            ldr     r3, [r7, #4]
+ 80023e4:      4a2a            ldr     r2, [pc, #168]  ; (8002490 <TIM_Base_SetConfig+0x120>)
+ 80023e6:      4293            cmp     r3, r2
+ 80023e8:      d01b            beq.n   8002422 <TIM_Base_SetConfig+0xb2>
+ 80023ea:      687b            ldr     r3, [r7, #4]
+ 80023ec:      4a29            ldr     r2, [pc, #164]  ; (8002494 <TIM_Base_SetConfig+0x124>)
+ 80023ee:      4293            cmp     r3, r2
+ 80023f0:      d017            beq.n   8002422 <TIM_Base_SetConfig+0xb2>
+ 80023f2:      687b            ldr     r3, [r7, #4]
+ 80023f4:      4a28            ldr     r2, [pc, #160]  ; (8002498 <TIM_Base_SetConfig+0x128>)
+ 80023f6:      4293            cmp     r3, r2
+ 80023f8:      d013            beq.n   8002422 <TIM_Base_SetConfig+0xb2>
+ 80023fa:      687b            ldr     r3, [r7, #4]
+ 80023fc:      4a27            ldr     r2, [pc, #156]  ; (800249c <TIM_Base_SetConfig+0x12c>)
+ 80023fe:      4293            cmp     r3, r2
+ 8002400:      d00f            beq.n   8002422 <TIM_Base_SetConfig+0xb2>
+ 8002402:      687b            ldr     r3, [r7, #4]
+ 8002404:      4a26            ldr     r2, [pc, #152]  ; (80024a0 <TIM_Base_SetConfig+0x130>)
+ 8002406:      4293            cmp     r3, r2
+ 8002408:      d00b            beq.n   8002422 <TIM_Base_SetConfig+0xb2>
+ 800240a:      687b            ldr     r3, [r7, #4]
+ 800240c:      4a25            ldr     r2, [pc, #148]  ; (80024a4 <TIM_Base_SetConfig+0x134>)
+ 800240e:      4293            cmp     r3, r2
+ 8002410:      d007            beq.n   8002422 <TIM_Base_SetConfig+0xb2>
+ 8002412:      687b            ldr     r3, [r7, #4]
+ 8002414:      4a24            ldr     r2, [pc, #144]  ; (80024a8 <TIM_Base_SetConfig+0x138>)
+ 8002416:      4293            cmp     r3, r2
+ 8002418:      d003            beq.n   8002422 <TIM_Base_SetConfig+0xb2>
+ 800241a:      687b            ldr     r3, [r7, #4]
+ 800241c:      4a23            ldr     r2, [pc, #140]  ; (80024ac <TIM_Base_SetConfig+0x13c>)
+ 800241e:      4293            cmp     r3, r2
+ 8002420:      d108            bne.n   8002434 <TIM_Base_SetConfig+0xc4>
+  {
+    /* Set the clock division */
+    tmpcr1 &= ~TIM_CR1_CKD;
+ 8002422:      68fb            ldr     r3, [r7, #12]
+ 8002424:      f423 7340       bic.w   r3, r3, #768    ; 0x300
+ 8002428:      60fb            str     r3, [r7, #12]
+    tmpcr1 |= (uint32_t)Structure->ClockDivision;
+ 800242a:      683b            ldr     r3, [r7, #0]
+ 800242c:      68db            ldr     r3, [r3, #12]
+ 800242e:      68fa            ldr     r2, [r7, #12]
+ 8002430:      4313            orrs    r3, r2
+ 8002432:      60fb            str     r3, [r7, #12]
+  }
+
+  /* Set the auto-reload preload */
+  MODIFY_REG(tmpcr1, TIM_CR1_ARPE, Structure->AutoReloadPreload);
+ 8002434:      68fb            ldr     r3, [r7, #12]
+ 8002436:      f023 0280       bic.w   r2, r3, #128    ; 0x80
+ 800243a:      683b            ldr     r3, [r7, #0]
+ 800243c:      695b            ldr     r3, [r3, #20]
+ 800243e:      4313            orrs    r3, r2
+ 8002440:      60fb            str     r3, [r7, #12]
+
+  TIMx->CR1 = tmpcr1;
+ 8002442:      687b            ldr     r3, [r7, #4]
+ 8002444:      68fa            ldr     r2, [r7, #12]
+ 8002446:      601a            str     r2, [r3, #0]
+
+  /* Set the Autoreload value */
+  TIMx->ARR = (uint32_t)Structure->Period ;
+ 8002448:      683b            ldr     r3, [r7, #0]
+ 800244a:      689a            ldr     r2, [r3, #8]
+ 800244c:      687b            ldr     r3, [r7, #4]
+ 800244e:      62da            str     r2, [r3, #44]   ; 0x2c
+
+  /* Set the Prescaler value */
+  TIMx->PSC = Structure->Prescaler;
+ 8002450:      683b            ldr     r3, [r7, #0]
+ 8002452:      681a            ldr     r2, [r3, #0]
+ 8002454:      687b            ldr     r3, [r7, #4]
+ 8002456:      629a            str     r2, [r3, #40]   ; 0x28
+
+  if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx))
+ 8002458:      687b            ldr     r3, [r7, #4]
+ 800245a:      4a0a            ldr     r2, [pc, #40]   ; (8002484 <TIM_Base_SetConfig+0x114>)
+ 800245c:      4293            cmp     r3, r2
+ 800245e:      d003            beq.n   8002468 <TIM_Base_SetConfig+0xf8>
+ 8002460:      687b            ldr     r3, [r7, #4]
+ 8002462:      4a0c            ldr     r2, [pc, #48]   ; (8002494 <TIM_Base_SetConfig+0x124>)
+ 8002464:      4293            cmp     r3, r2
+ 8002466:      d103            bne.n   8002470 <TIM_Base_SetConfig+0x100>
+  {
+    /* Set the Repetition Counter value */
+    TIMx->RCR = Structure->RepetitionCounter;
+ 8002468:      683b            ldr     r3, [r7, #0]
+ 800246a:      691a            ldr     r2, [r3, #16]
+ 800246c:      687b            ldr     r3, [r7, #4]
+ 800246e:      631a            str     r2, [r3, #48]   ; 0x30
+  }
+
+  /* Generate an update event to reload the Prescaler
+     and the repetition counter (only for advanced timer) value immediately */
+  TIMx->EGR = TIM_EGR_UG;
+ 8002470:      687b            ldr     r3, [r7, #4]
+ 8002472:      2201            movs    r2, #1
+ 8002474:      615a            str     r2, [r3, #20]
+}
+ 8002476:      bf00            nop
+ 8002478:      3714            adds    r7, #20
+ 800247a:      46bd            mov     sp, r7
+ 800247c:      f85d 7b04       ldr.w   r7, [sp], #4
+ 8002480:      4770            bx      lr
+ 8002482:      bf00            nop
+ 8002484:      40010000        .word   0x40010000
+ 8002488:      40000400        .word   0x40000400
+ 800248c:      40000800        .word   0x40000800
+ 8002490:      40000c00        .word   0x40000c00
+ 8002494:      40010400        .word   0x40010400
+ 8002498:      40014000        .word   0x40014000
+ 800249c:      40014400        .word   0x40014400
+ 80024a0:      40014800        .word   0x40014800
+ 80024a4:      40001800        .word   0x40001800
+ 80024a8:      40001c00        .word   0x40001c00
+ 80024ac:      40002000        .word   0x40002000
+
+080024b0 <HAL_TIMEx_MasterConfigSynchronization>:
+  *         mode.
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim,
+                                                        TIM_MasterConfigTypeDef *sMasterConfig)
+{
+ 80024b0:      b480            push    {r7}
+ 80024b2:      b085            sub     sp, #20
+ 80024b4:      af00            add     r7, sp, #0
+ 80024b6:      6078            str     r0, [r7, #4]
+ 80024b8:      6039            str     r1, [r7, #0]
+  assert_param(IS_TIM_SYNCHRO_INSTANCE(htim->Instance));
+  assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger));
+  assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode));
+
+  /* Check input state */
+  __HAL_LOCK(htim);
+ 80024ba:      687b            ldr     r3, [r7, #4]
+ 80024bc:      f893 303c       ldrb.w  r3, [r3, #60]   ; 0x3c
+ 80024c0:      2b01            cmp     r3, #1
+ 80024c2:      d101            bne.n   80024c8 <HAL_TIMEx_MasterConfigSynchronization+0x18>
+ 80024c4:      2302            movs    r3, #2
+ 80024c6:      e045            b.n     8002554 <HAL_TIMEx_MasterConfigSynchronization+0xa4>
+ 80024c8:      687b            ldr     r3, [r7, #4]
+ 80024ca:      2201            movs    r2, #1
+ 80024cc:      f883 203c       strb.w  r2, [r3, #60]   ; 0x3c
+
+  /* Change the handler state */
+  htim->State = HAL_TIM_STATE_BUSY;
+ 80024d0:      687b            ldr     r3, [r7, #4]
+ 80024d2:      2202            movs    r2, #2
+ 80024d4:      f883 203d       strb.w  r2, [r3, #61]   ; 0x3d
+
+  /* Get the TIMx CR2 register value */
+  tmpcr2 = htim->Instance->CR2;
+ 80024d8:      687b            ldr     r3, [r7, #4]
+ 80024da:      681b            ldr     r3, [r3, #0]
+ 80024dc:      685b            ldr     r3, [r3, #4]
+ 80024de:      60fb            str     r3, [r7, #12]
+
+  /* Get the TIMx SMCR register value */
+  tmpsmcr = htim->Instance->SMCR;
+ 80024e0:      687b            ldr     r3, [r7, #4]
+ 80024e2:      681b            ldr     r3, [r3, #0]
+ 80024e4:      689b            ldr     r3, [r3, #8]
+ 80024e6:      60bb            str     r3, [r7, #8]
+
+  /* If the timer supports ADC synchronization through TRGO2, set the master mode selection 2 */
+  if (IS_TIM_TRGO2_INSTANCE(htim->Instance))
+ 80024e8:      687b            ldr     r3, [r7, #4]
+ 80024ea:      681b            ldr     r3, [r3, #0]
+ 80024ec:      4a1c            ldr     r2, [pc, #112]  ; (8002560 <HAL_TIMEx_MasterConfigSynchronization+0xb0>)
+ 80024ee:      4293            cmp     r3, r2
+ 80024f0:      d004            beq.n   80024fc <HAL_TIMEx_MasterConfigSynchronization+0x4c>
+ 80024f2:      687b            ldr     r3, [r7, #4]
+ 80024f4:      681b            ldr     r3, [r3, #0]
+ 80024f6:      4a1b            ldr     r2, [pc, #108]  ; (8002564 <HAL_TIMEx_MasterConfigSynchronization+0xb4>)
+ 80024f8:      4293            cmp     r3, r2
+ 80024fa:      d108            bne.n   800250e <HAL_TIMEx_MasterConfigSynchronization+0x5e>
+  {
+    /* Check the parameters */
+    assert_param(IS_TIM_TRGO2_SOURCE(sMasterConfig->MasterOutputTrigger2));
+
+    /* Clear the MMS2 bits */
+    tmpcr2 &= ~TIM_CR2_MMS2;
+ 80024fc:      68fb            ldr     r3, [r7, #12]
+ 80024fe:      f423 0370       bic.w   r3, r3, #15728640       ; 0xf00000
+ 8002502:      60fb            str     r3, [r7, #12]
+    /* Select the TRGO2 source*/
+    tmpcr2 |= sMasterConfig->MasterOutputTrigger2;
+ 8002504:      683b            ldr     r3, [r7, #0]
+ 8002506:      685b            ldr     r3, [r3, #4]
+ 8002508:      68fa            ldr     r2, [r7, #12]
+ 800250a:      4313            orrs    r3, r2
+ 800250c:      60fb            str     r3, [r7, #12]
+  }
+
+  /* Reset the MMS Bits */
+  tmpcr2 &= ~TIM_CR2_MMS;
+ 800250e:      68fb            ldr     r3, [r7, #12]
+ 8002510:      f023 0370       bic.w   r3, r3, #112    ; 0x70
+ 8002514:      60fb            str     r3, [r7, #12]
+  /* Select the TRGO source */
+  tmpcr2 |=  sMasterConfig->MasterOutputTrigger;
+ 8002516:      683b            ldr     r3, [r7, #0]
+ 8002518:      681b            ldr     r3, [r3, #0]
+ 800251a:      68fa            ldr     r2, [r7, #12]
+ 800251c:      4313            orrs    r3, r2
+ 800251e:      60fb            str     r3, [r7, #12]
+
+  /* Reset the MSM Bit */
+  tmpsmcr &= ~TIM_SMCR_MSM;
+ 8002520:      68bb            ldr     r3, [r7, #8]
+ 8002522:      f023 0380       bic.w   r3, r3, #128    ; 0x80
+ 8002526:      60bb            str     r3, [r7, #8]
+  /* Set master mode */
+  tmpsmcr |= sMasterConfig->MasterSlaveMode;
+ 8002528:      683b            ldr     r3, [r7, #0]
+ 800252a:      689b            ldr     r3, [r3, #8]
+ 800252c:      68ba            ldr     r2, [r7, #8]
+ 800252e:      4313            orrs    r3, r2
+ 8002530:      60bb            str     r3, [r7, #8]
+
+  /* Update TIMx CR2 */
+  htim->Instance->CR2 = tmpcr2;
+ 8002532:      687b            ldr     r3, [r7, #4]
+ 8002534:      681b            ldr     r3, [r3, #0]
+ 8002536:      68fa            ldr     r2, [r7, #12]
+ 8002538:      605a            str     r2, [r3, #4]
+
+  /* Update TIMx SMCR */
+  htim->Instance->SMCR = tmpsmcr;
+ 800253a:      687b            ldr     r3, [r7, #4]
+ 800253c:      681b            ldr     r3, [r3, #0]
+ 800253e:      68ba            ldr     r2, [r7, #8]
+ 8002540:      609a            str     r2, [r3, #8]
+
+  /* Change the htim state */
+  htim->State = HAL_TIM_STATE_READY;
+ 8002542:      687b            ldr     r3, [r7, #4]
+ 8002544:      2201            movs    r2, #1
+ 8002546:      f883 203d       strb.w  r2, [r3, #61]   ; 0x3d
+
+  __HAL_UNLOCK(htim);
+ 800254a:      687b            ldr     r3, [r7, #4]
+ 800254c:      2200            movs    r2, #0
+ 800254e:      f883 203c       strb.w  r2, [r3, #60]   ; 0x3c
+
+  return HAL_OK;
+ 8002552:      2300            movs    r3, #0
+}
+ 8002554:      4618            mov     r0, r3
+ 8002556:      3714            adds    r7, #20
+ 8002558:      46bd            mov     sp, r7
+ 800255a:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800255e:      4770            bx      lr
+ 8002560:      40010000        .word   0x40010000
+ 8002564:      40010400        .word   0x40010400
+
+08002568 <HAL_UART_Init>:
+  *        parameters in the UART_InitTypeDef and initialize the associated handle.
+  * @param huart UART handle.
+  * @retval HAL status
+  */
+HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart)
+{
+ 8002568:      b580            push    {r7, lr}
+ 800256a:      b082            sub     sp, #8
+ 800256c:      af00            add     r7, sp, #0
+ 800256e:      6078            str     r0, [r7, #4]
   /* Check the UART handle allocation */
   if (huart == NULL)
- 8002254:      687b            ldr     r3, [r7, #4]
- 8002256:      2b00            cmp     r3, #0
- 8002258:      d101            bne.n   800225e <HAL_UART_Init+0x12>
+ 8002570:      687b            ldr     r3, [r7, #4]
+ 8002572:      2b00            cmp     r3, #0
+ 8002574:      d101            bne.n   800257a <HAL_UART_Init+0x12>
   {
     return HAL_ERROR;
- 800225a:      2301            movs    r3, #1
- 800225c:      e040            b.n     80022e0 <HAL_UART_Init+0x94>
+ 8002576:      2301            movs    r3, #1
+ 8002578:      e040            b.n     80025fc <HAL_UART_Init+0x94>
   {
     /* Check the parameters */
     assert_param(IS_UART_INSTANCE(huart->Instance));
   }
 
   if (huart->gState == HAL_UART_STATE_RESET)
- 800225e:      687b            ldr     r3, [r7, #4]
- 8002260:      6f5b            ldr     r3, [r3, #116]  ; 0x74
- 8002262:      2b00            cmp     r3, #0
- 8002264:      d106            bne.n   8002274 <HAL_UART_Init+0x28>
+ 800257a:      687b            ldr     r3, [r7, #4]
+ 800257c:      6f5b            ldr     r3, [r3, #116]  ; 0x74
+ 800257e:      2b00            cmp     r3, #0
+ 8002580:      d106            bne.n   8002590 <HAL_UART_Init+0x28>
   {
     /* Allocate lock resource and initialize it */
     huart->Lock = HAL_UNLOCKED;
- 8002266:      687b            ldr     r3, [r7, #4]
- 8002268:      2200            movs    r2, #0
- 800226a:      f883 2070       strb.w  r2, [r3, #112]  ; 0x70
+ 8002582:      687b            ldr     r3, [r7, #4]
+ 8002584:      2200            movs    r2, #0
+ 8002586:      f883 2070       strb.w  r2, [r3, #112]  ; 0x70
 
     /* Init the low level hardware */
     huart->MspInitCallback(huart);
 #else
     /* Init the low level hardware : GPIO, CLOCK */
     HAL_UART_MspInit(huart);
- 800226e:      6878            ldr     r0, [r7, #4]
- 8002270:      f000 feac       bl      8002fcc <HAL_UART_MspInit>
+ 800258a:      6878            ldr     r0, [r7, #4]
+ 800258c:      f000 ff5a       bl      8003444 <HAL_UART_MspInit>
 #endif /* (USE_HAL_UART_REGISTER_CALLBACKS) */
   }
 
   huart->gState = HAL_UART_STATE_BUSY;
- 8002274:      687b            ldr     r3, [r7, #4]
- 8002276:      2224            movs    r2, #36 ; 0x24
- 8002278:      675a            str     r2, [r3, #116]  ; 0x74
+ 8002590:      687b            ldr     r3, [r7, #4]
+ 8002592:      2224            movs    r2, #36 ; 0x24
+ 8002594:      675a            str     r2, [r3, #116]  ; 0x74
 
   /* Disable the Peripheral */
   __HAL_UART_DISABLE(huart);
- 800227a:      687b            ldr     r3, [r7, #4]
- 800227c:      681b            ldr     r3, [r3, #0]
- 800227e:      681a            ldr     r2, [r3, #0]
- 8002280:      687b            ldr     r3, [r7, #4]
- 8002282:      681b            ldr     r3, [r3, #0]
- 8002284:      f022 0201       bic.w   r2, r2, #1
- 8002288:      601a            str     r2, [r3, #0]
+ 8002596:      687b            ldr     r3, [r7, #4]
+ 8002598:      681b            ldr     r3, [r3, #0]
+ 800259a:      681a            ldr     r2, [r3, #0]
+ 800259c:      687b            ldr     r3, [r7, #4]
+ 800259e:      681b            ldr     r3, [r3, #0]
+ 80025a0:      f022 0201       bic.w   r2, r2, #1
+ 80025a4:      601a            str     r2, [r3, #0]
 
   /* Set the UART Communication parameters */
   if (UART_SetConfig(huart) == HAL_ERROR)
- 800228a:      6878            ldr     r0, [r7, #4]
- 800228c:      f000 f95c       bl      8002548 <UART_SetConfig>
- 8002290:      4603            mov     r3, r0
- 8002292:      2b01            cmp     r3, #1
- 8002294:      d101            bne.n   800229a <HAL_UART_Init+0x4e>
+ 80025a6:      6878            ldr     r0, [r7, #4]
+ 80025a8:      f000 f95c       bl      8002864 <UART_SetConfig>
+ 80025ac:      4603            mov     r3, r0
+ 80025ae:      2b01            cmp     r3, #1
+ 80025b0:      d101            bne.n   80025b6 <HAL_UART_Init+0x4e>
   {
     return HAL_ERROR;
- 8002296:      2301            movs    r3, #1
- 8002298:      e022            b.n     80022e0 <HAL_UART_Init+0x94>
+ 80025b2:      2301            movs    r3, #1
+ 80025b4:      e022            b.n     80025fc <HAL_UART_Init+0x94>
   }
 
   if (huart->AdvancedInit.AdvFeatureInit != UART_ADVFEATURE_NO_INIT)
- 800229a:      687b            ldr     r3, [r7, #4]
- 800229c:      6a5b            ldr     r3, [r3, #36]   ; 0x24
- 800229e:      2b00            cmp     r3, #0
- 80022a0:      d002            beq.n   80022a8 <HAL_UART_Init+0x5c>
+ 80025b6:      687b            ldr     r3, [r7, #4]
+ 80025b8:      6a5b            ldr     r3, [r3, #36]   ; 0x24
+ 80025ba:      2b00            cmp     r3, #0
+ 80025bc:      d002            beq.n   80025c4 <HAL_UART_Init+0x5c>
   {
     UART_AdvFeatureConfig(huart);
- 80022a2:      6878            ldr     r0, [r7, #4]
- 80022a4:      f000 fbf4       bl      8002a90 <UART_AdvFeatureConfig>
+ 80025be:      6878            ldr     r0, [r7, #4]
+ 80025c0:      f000 fbf4       bl      8002dac <UART_AdvFeatureConfig>
   }
 
   /* In asynchronous mode, the following bits must be kept cleared:
   - LINEN and CLKEN bits in the USART_CR2 register,
   - SCEN, HDSEL and IREN  bits in the USART_CR3 register.*/
   CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
- 80022a8:      687b            ldr     r3, [r7, #4]
- 80022aa:      681b            ldr     r3, [r3, #0]
- 80022ac:      685a            ldr     r2, [r3, #4]
- 80022ae:      687b            ldr     r3, [r7, #4]
- 80022b0:      681b            ldr     r3, [r3, #0]
- 80022b2:      f422 4290       bic.w   r2, r2, #18432  ; 0x4800
- 80022b6:      605a            str     r2, [r3, #4]
+ 80025c4:      687b            ldr     r3, [r7, #4]
+ 80025c6:      681b            ldr     r3, [r3, #0]
+ 80025c8:      685a            ldr     r2, [r3, #4]
+ 80025ca:      687b            ldr     r3, [r7, #4]
+ 80025cc:      681b            ldr     r3, [r3, #0]
+ 80025ce:      f422 4290       bic.w   r2, r2, #18432  ; 0x4800
+ 80025d2:      605a            str     r2, [r3, #4]
   CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN));
- 80022b8:      687b            ldr     r3, [r7, #4]
- 80022ba:      681b            ldr     r3, [r3, #0]
- 80022bc:      689a            ldr     r2, [r3, #8]
- 80022be:      687b            ldr     r3, [r7, #4]
- 80022c0:      681b            ldr     r3, [r3, #0]
- 80022c2:      f022 022a       bic.w   r2, r2, #42     ; 0x2a
- 80022c6:      609a            str     r2, [r3, #8]
+ 80025d4:      687b            ldr     r3, [r7, #4]
+ 80025d6:      681b            ldr     r3, [r3, #0]
+ 80025d8:      689a            ldr     r2, [r3, #8]
+ 80025da:      687b            ldr     r3, [r7, #4]
+ 80025dc:      681b            ldr     r3, [r3, #0]
+ 80025de:      f022 022a       bic.w   r2, r2, #42     ; 0x2a
+ 80025e2:      609a            str     r2, [r3, #8]
 
   /* Enable the Peripheral */
   __HAL_UART_ENABLE(huart);
- 80022c8:      687b            ldr     r3, [r7, #4]
- 80022ca:      681b            ldr     r3, [r3, #0]
- 80022cc:      681a            ldr     r2, [r3, #0]
- 80022ce:      687b            ldr     r3, [r7, #4]
- 80022d0:      681b            ldr     r3, [r3, #0]
- 80022d2:      f042 0201       orr.w   r2, r2, #1
- 80022d6:      601a            str     r2, [r3, #0]
+ 80025e4:      687b            ldr     r3, [r7, #4]
+ 80025e6:      681b            ldr     r3, [r3, #0]
+ 80025e8:      681a            ldr     r2, [r3, #0]
+ 80025ea:      687b            ldr     r3, [r7, #4]
+ 80025ec:      681b            ldr     r3, [r3, #0]
+ 80025ee:      f042 0201       orr.w   r2, r2, #1
+ 80025f2:      601a            str     r2, [r3, #0]
 
   /* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */
   return (UART_CheckIdleState(huart));
- 80022d8:      6878            ldr     r0, [r7, #4]
- 80022da:      f000 fc7b       bl      8002bd4 <UART_CheckIdleState>
- 80022de:      4603            mov     r3, r0
+ 80025f4:      6878            ldr     r0, [r7, #4]
+ 80025f6:      f000 fc7b       bl      8002ef0 <UART_CheckIdleState>
+ 80025fa:      4603            mov     r3, r0
 }
- 80022e0:      4618            mov     r0, r3
- 80022e2:      3708            adds    r7, #8
- 80022e4:      46bd            mov     sp, r7
- 80022e6:      bd80            pop     {r7, pc}
+ 80025fc:      4618            mov     r0, r3
+ 80025fe:      3708            adds    r7, #8
+ 8002600:      46bd            mov     sp, r7
+ 8002602:      bd80            pop     {r7, pc}
 
-080022e8 <HAL_UART_IRQHandler>:
+08002604 <HAL_UART_IRQHandler>:
   * @brief Handle UART interrupt request.
   * @param huart UART handle.
   * @retval None
   */
 void HAL_UART_IRQHandler(UART_HandleTypeDef *huart)
 {
- 80022e8:      b580            push    {r7, lr}
- 80022ea:      b088            sub     sp, #32
- 80022ec:      af00            add     r7, sp, #0
- 80022ee:      6078            str     r0, [r7, #4]
+ 8002604:      b580            push    {r7, lr}
+ 8002606:      b088            sub     sp, #32
+ 8002608:      af00            add     r7, sp, #0
+ 800260a:      6078            str     r0, [r7, #4]
   uint32_t isrflags   = READ_REG(huart->Instance->ISR);
- 80022f0:      687b            ldr     r3, [r7, #4]
- 80022f2:      681b            ldr     r3, [r3, #0]
- 80022f4:      69db            ldr     r3, [r3, #28]
- 80022f6:      61fb            str     r3, [r7, #28]
+ 800260c:      687b            ldr     r3, [r7, #4]
+ 800260e:      681b            ldr     r3, [r3, #0]
+ 8002610:      69db            ldr     r3, [r3, #28]
+ 8002612:      61fb            str     r3, [r7, #28]
   uint32_t cr1its     = READ_REG(huart->Instance->CR1);
- 80022f8:      687b            ldr     r3, [r7, #4]
- 80022fa:      681b            ldr     r3, [r3, #0]
- 80022fc:      681b            ldr     r3, [r3, #0]
- 80022fe:      61bb            str     r3, [r7, #24]
+ 8002614:      687b            ldr     r3, [r7, #4]
+ 8002616:      681b            ldr     r3, [r3, #0]
+ 8002618:      681b            ldr     r3, [r3, #0]
+ 800261a:      61bb            str     r3, [r7, #24]
   uint32_t cr3its     = READ_REG(huart->Instance->CR3);
- 8002300:      687b            ldr     r3, [r7, #4]
- 8002302:      681b            ldr     r3, [r3, #0]
- 8002304:      689b            ldr     r3, [r3, #8]
- 8002306:      617b            str     r3, [r7, #20]
+ 800261c:      687b            ldr     r3, [r7, #4]
+ 800261e:      681b            ldr     r3, [r3, #0]
+ 8002620:      689b            ldr     r3, [r3, #8]
+ 8002622:      617b            str     r3, [r7, #20]
 
   uint32_t errorflags;
   uint32_t errorcode;
 
   /* If no error occurs */
   errorflags = (isrflags & (uint32_t)(USART_ISR_PE | USART_ISR_FE | USART_ISR_ORE | USART_ISR_NE));
- 8002308:      69fb            ldr     r3, [r7, #28]
- 800230a:      f003 030f       and.w   r3, r3, #15
- 800230e:      613b            str     r3, [r7, #16]
+ 8002624:      69fb            ldr     r3, [r7, #28]
+ 8002626:      f003 030f       and.w   r3, r3, #15
+ 800262a:      613b            str     r3, [r7, #16]
   if (errorflags == 0U)
- 8002310:      693b            ldr     r3, [r7, #16]
- 8002312:      2b00            cmp     r3, #0
- 8002314:      d113            bne.n   800233e <HAL_UART_IRQHandler+0x56>
+ 800262c:      693b            ldr     r3, [r7, #16]
+ 800262e:      2b00            cmp     r3, #0
+ 8002630:      d113            bne.n   800265a <HAL_UART_IRQHandler+0x56>
   {
     /* UART in mode Receiver ---------------------------------------------------*/
     if (((isrflags & USART_ISR_RXNE) != 0U)
- 8002316:      69fb            ldr     r3, [r7, #28]
- 8002318:      f003 0320       and.w   r3, r3, #32
- 800231c:      2b00            cmp     r3, #0
- 800231e:      d00e            beq.n   800233e <HAL_UART_IRQHandler+0x56>
+ 8002632:      69fb            ldr     r3, [r7, #28]
+ 8002634:      f003 0320       and.w   r3, r3, #32
+ 8002638:      2b00            cmp     r3, #0
+ 800263a:      d00e            beq.n   800265a <HAL_UART_IRQHandler+0x56>
         && ((cr1its & USART_CR1_RXNEIE) != 0U))
- 8002320:      69bb            ldr     r3, [r7, #24]
- 8002322:      f003 0320       and.w   r3, r3, #32
- 8002326:      2b00            cmp     r3, #0
- 8002328:      d009            beq.n   800233e <HAL_UART_IRQHandler+0x56>
+ 800263c:      69bb            ldr     r3, [r7, #24]
+ 800263e:      f003 0320       and.w   r3, r3, #32
+ 8002642:      2b00            cmp     r3, #0
+ 8002644:      d009            beq.n   800265a <HAL_UART_IRQHandler+0x56>
     {
       if (huart->RxISR != NULL)
- 800232a:      687b            ldr     r3, [r7, #4]
- 800232c:      6e1b            ldr     r3, [r3, #96]   ; 0x60
- 800232e:      2b00            cmp     r3, #0
- 8002330:      f000 80eb       beq.w   800250a <HAL_UART_IRQHandler+0x222>
+ 8002646:      687b            ldr     r3, [r7, #4]
+ 8002648:      6e1b            ldr     r3, [r3, #96]   ; 0x60
+ 800264a:      2b00            cmp     r3, #0
+ 800264c:      f000 80eb       beq.w   8002826 <HAL_UART_IRQHandler+0x222>
       {
         huart->RxISR(huart);
- 8002334:      687b            ldr     r3, [r7, #4]
- 8002336:      6e1b            ldr     r3, [r3, #96]   ; 0x60
- 8002338:      6878            ldr     r0, [r7, #4]
- 800233a:      4798            blx     r3
+ 8002650:      687b            ldr     r3, [r7, #4]
+ 8002652:      6e1b            ldr     r3, [r3, #96]   ; 0x60
+ 8002654:      6878            ldr     r0, [r7, #4]
+ 8002656:      4798            blx     r3
       }
       return;
- 800233c:      e0e5            b.n     800250a <HAL_UART_IRQHandler+0x222>
+ 8002658:      e0e5            b.n     8002826 <HAL_UART_IRQHandler+0x222>
     }
   }
 
   /* If some errors occur */
   if ((errorflags != 0U)
- 800233e:      693b            ldr     r3, [r7, #16]
- 8002340:      2b00            cmp     r3, #0
- 8002342:      f000 80c0       beq.w   80024c6 <HAL_UART_IRQHandler+0x1de>
+ 800265a:      693b            ldr     r3, [r7, #16]
+ 800265c:      2b00            cmp     r3, #0
+ 800265e:      f000 80c0       beq.w   80027e2 <HAL_UART_IRQHandler+0x1de>
       && (((cr3its & USART_CR3_EIE) != 0U)
- 8002346:      697b            ldr     r3, [r7, #20]
- 8002348:      f003 0301       and.w   r3, r3, #1
- 800234c:      2b00            cmp     r3, #0
- 800234e:      d105            bne.n   800235c <HAL_UART_IRQHandler+0x74>
+ 8002662:      697b            ldr     r3, [r7, #20]
+ 8002664:      f003 0301       and.w   r3, r3, #1
+ 8002668:      2b00            cmp     r3, #0
+ 800266a:      d105            bne.n   8002678 <HAL_UART_IRQHandler+0x74>
           || ((cr1its & (USART_CR1_RXNEIE | USART_CR1_PEIE)) != 0U)))
- 8002350:      69bb            ldr     r3, [r7, #24]
- 8002352:      f403 7390       and.w   r3, r3, #288    ; 0x120
- 8002356:      2b00            cmp     r3, #0
- 8002358:      f000 80b5       beq.w   80024c6 <HAL_UART_IRQHandler+0x1de>
+ 800266c:      69bb            ldr     r3, [r7, #24]
+ 800266e:      f403 7390       and.w   r3, r3, #288    ; 0x120
+ 8002672:      2b00            cmp     r3, #0
+ 8002674:      f000 80b5       beq.w   80027e2 <HAL_UART_IRQHandler+0x1de>
   {
     /* UART parity error interrupt occurred -------------------------------------*/
     if (((isrflags & USART_ISR_PE) != 0U) && ((cr1its & USART_CR1_PEIE) != 0U))
- 800235c:      69fb            ldr     r3, [r7, #28]
- 800235e:      f003 0301       and.w   r3, r3, #1
- 8002362:      2b00            cmp     r3, #0
- 8002364:      d00e            beq.n   8002384 <HAL_UART_IRQHandler+0x9c>
- 8002366:      69bb            ldr     r3, [r7, #24]
- 8002368:      f403 7380       and.w   r3, r3, #256    ; 0x100
- 800236c:      2b00            cmp     r3, #0
- 800236e:      d009            beq.n   8002384 <HAL_UART_IRQHandler+0x9c>
+ 8002678:      69fb            ldr     r3, [r7, #28]
+ 800267a:      f003 0301       and.w   r3, r3, #1
+ 800267e:      2b00            cmp     r3, #0
+ 8002680:      d00e            beq.n   80026a0 <HAL_UART_IRQHandler+0x9c>
+ 8002682:      69bb            ldr     r3, [r7, #24]
+ 8002684:      f403 7380       and.w   r3, r3, #256    ; 0x100
+ 8002688:      2b00            cmp     r3, #0
+ 800268a:      d009            beq.n   80026a0 <HAL_UART_IRQHandler+0x9c>
     {
       __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_PEF);
- 8002370:      687b            ldr     r3, [r7, #4]
- 8002372:      681b            ldr     r3, [r3, #0]
- 8002374:      2201            movs    r2, #1
- 8002376:      621a            str     r2, [r3, #32]
+ 800268c:      687b            ldr     r3, [r7, #4]
+ 800268e:      681b            ldr     r3, [r3, #0]
+ 8002690:      2201            movs    r2, #1
+ 8002692:      621a            str     r2, [r3, #32]
 
       huart->ErrorCode |= HAL_UART_ERROR_PE;
- 8002378:      687b            ldr     r3, [r7, #4]
- 800237a:      6fdb            ldr     r3, [r3, #124]  ; 0x7c
- 800237c:      f043 0201       orr.w   r2, r3, #1
- 8002380:      687b            ldr     r3, [r7, #4]
- 8002382:      67da            str     r2, [r3, #124]  ; 0x7c
+ 8002694:      687b            ldr     r3, [r7, #4]
+ 8002696:      6fdb            ldr     r3, [r3, #124]  ; 0x7c
+ 8002698:      f043 0201       orr.w   r2, r3, #1
+ 800269c:      687b            ldr     r3, [r7, #4]
+ 800269e:      67da            str     r2, [r3, #124]  ; 0x7c
     }
 
     /* UART frame error interrupt occurred --------------------------------------*/
     if (((isrflags & USART_ISR_FE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U))
- 8002384:      69fb            ldr     r3, [r7, #28]
- 8002386:      f003 0302       and.w   r3, r3, #2
- 800238a:      2b00            cmp     r3, #0
- 800238c:      d00e            beq.n   80023ac <HAL_UART_IRQHandler+0xc4>
- 800238e:      697b            ldr     r3, [r7, #20]
- 8002390:      f003 0301       and.w   r3, r3, #1
- 8002394:      2b00            cmp     r3, #0
- 8002396:      d009            beq.n   80023ac <HAL_UART_IRQHandler+0xc4>
+ 80026a0:      69fb            ldr     r3, [r7, #28]
+ 80026a2:      f003 0302       and.w   r3, r3, #2
+ 80026a6:      2b00            cmp     r3, #0
+ 80026a8:      d00e            beq.n   80026c8 <HAL_UART_IRQHandler+0xc4>
+ 80026aa:      697b            ldr     r3, [r7, #20]
+ 80026ac:      f003 0301       and.w   r3, r3, #1
+ 80026b0:      2b00            cmp     r3, #0
+ 80026b2:      d009            beq.n   80026c8 <HAL_UART_IRQHandler+0xc4>
     {
       __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_FEF);
- 8002398:      687b            ldr     r3, [r7, #4]
- 800239a:      681b            ldr     r3, [r3, #0]
- 800239c:      2202            movs    r2, #2
- 800239e:      621a            str     r2, [r3, #32]
+ 80026b4:      687b            ldr     r3, [r7, #4]
+ 80026b6:      681b            ldr     r3, [r3, #0]
+ 80026b8:      2202            movs    r2, #2
+ 80026ba:      621a            str     r2, [r3, #32]
 
       huart->ErrorCode |= HAL_UART_ERROR_FE;
- 80023a0:      687b            ldr     r3, [r7, #4]
- 80023a2:      6fdb            ldr     r3, [r3, #124]  ; 0x7c
- 80023a4:      f043 0204       orr.w   r2, r3, #4
- 80023a8:      687b            ldr     r3, [r7, #4]
- 80023aa:      67da            str     r2, [r3, #124]  ; 0x7c
+ 80026bc:      687b            ldr     r3, [r7, #4]
+ 80026be:      6fdb            ldr     r3, [r3, #124]  ; 0x7c
+ 80026c0:      f043 0204       orr.w   r2, r3, #4
+ 80026c4:      687b            ldr     r3, [r7, #4]
+ 80026c6:      67da            str     r2, [r3, #124]  ; 0x7c
     }
 
     /* UART noise error interrupt occurred --------------------------------------*/
     if (((isrflags & USART_ISR_NE) != 0U) && ((cr3its & USART_CR3_EIE) != 0U))
- 80023ac:      69fb            ldr     r3, [r7, #28]
- 80023ae:      f003 0304       and.w   r3, r3, #4
- 80023b2:      2b00            cmp     r3, #0
- 80023b4:      d00e            beq.n   80023d4 <HAL_UART_IRQHandler+0xec>
- 80023b6:      697b            ldr     r3, [r7, #20]
- 80023b8:      f003 0301       and.w   r3, r3, #1
- 80023bc:      2b00            cmp     r3, #0
- 80023be:      d009            beq.n   80023d4 <HAL_UART_IRQHandler+0xec>
+ 80026c8:      69fb            ldr     r3, [r7, #28]
+ 80026ca:      f003 0304       and.w   r3, r3, #4
+ 80026ce:      2b00            cmp     r3, #0
+ 80026d0:      d00e            beq.n   80026f0 <HAL_UART_IRQHandler+0xec>
+ 80026d2:      697b            ldr     r3, [r7, #20]
+ 80026d4:      f003 0301       and.w   r3, r3, #1
+ 80026d8:      2b00            cmp     r3, #0
+ 80026da:      d009            beq.n   80026f0 <HAL_UART_IRQHandler+0xec>
     {
       __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_NEF);
- 80023c0:      687b            ldr     r3, [r7, #4]
- 80023c2:      681b            ldr     r3, [r3, #0]
- 80023c4:      2204            movs    r2, #4
- 80023c6:      621a            str     r2, [r3, #32]
+ 80026dc:      687b            ldr     r3, [r7, #4]
+ 80026de:      681b            ldr     r3, [r3, #0]
+ 80026e0:      2204            movs    r2, #4
+ 80026e2:      621a            str     r2, [r3, #32]
 
       huart->ErrorCode |= HAL_UART_ERROR_NE;
- 80023c8:      687b            ldr     r3, [r7, #4]
- 80023ca:      6fdb            ldr     r3, [r3, #124]  ; 0x7c
- 80023cc:      f043 0202       orr.w   r2, r3, #2
- 80023d0:      687b            ldr     r3, [r7, #4]
- 80023d2:      67da            str     r2, [r3, #124]  ; 0x7c
+ 80026e4:      687b            ldr     r3, [r7, #4]
+ 80026e6:      6fdb            ldr     r3, [r3, #124]  ; 0x7c
+ 80026e8:      f043 0202       orr.w   r2, r3, #2
+ 80026ec:      687b            ldr     r3, [r7, #4]
+ 80026ee:      67da            str     r2, [r3, #124]  ; 0x7c
     }
 
     /* UART Over-Run interrupt occurred -----------------------------------------*/
     if (((isrflags & USART_ISR_ORE) != 0U)
- 80023d4:      69fb            ldr     r3, [r7, #28]
- 80023d6:      f003 0308       and.w   r3, r3, #8
- 80023da:      2b00            cmp     r3, #0
- 80023dc:      d013            beq.n   8002406 <HAL_UART_IRQHandler+0x11e>
+ 80026f0:      69fb            ldr     r3, [r7, #28]
+ 80026f2:      f003 0308       and.w   r3, r3, #8
+ 80026f6:      2b00            cmp     r3, #0
+ 80026f8:      d013            beq.n   8002722 <HAL_UART_IRQHandler+0x11e>
         && (((cr1its & USART_CR1_RXNEIE) != 0U) ||
- 80023de:      69bb            ldr     r3, [r7, #24]
- 80023e0:      f003 0320       and.w   r3, r3, #32
- 80023e4:      2b00            cmp     r3, #0
- 80023e6:      d104            bne.n   80023f2 <HAL_UART_IRQHandler+0x10a>
+ 80026fa:      69bb            ldr     r3, [r7, #24]
+ 80026fc:      f003 0320       and.w   r3, r3, #32
+ 8002700:      2b00            cmp     r3, #0
+ 8002702:      d104            bne.n   800270e <HAL_UART_IRQHandler+0x10a>
             ((cr3its & USART_CR3_EIE) != 0U)))
- 80023e8:      697b            ldr     r3, [r7, #20]
- 80023ea:      f003 0301       and.w   r3, r3, #1
+ 8002704:      697b            ldr     r3, [r7, #20]
+ 8002706:      f003 0301       and.w   r3, r3, #1
         && (((cr1its & USART_CR1_RXNEIE) != 0U) ||
- 80023ee:      2b00            cmp     r3, #0
- 80023f0:      d009            beq.n   8002406 <HAL_UART_IRQHandler+0x11e>
+ 800270a:      2b00            cmp     r3, #0
+ 800270c:      d009            beq.n   8002722 <HAL_UART_IRQHandler+0x11e>
     {
       __HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_OREF);
- 80023f2:      687b            ldr     r3, [r7, #4]
- 80023f4:      681b            ldr     r3, [r3, #0]
- 80023f6:      2208            movs    r2, #8
- 80023f8:      621a            str     r2, [r3, #32]
+ 800270e:      687b            ldr     r3, [r7, #4]
+ 8002710:      681b            ldr     r3, [r3, #0]
+ 8002712:      2208            movs    r2, #8
+ 8002714:      621a            str     r2, [r3, #32]
 
       huart->ErrorCode |= HAL_UART_ERROR_ORE;
- 80023fa:      687b            ldr     r3, [r7, #4]
- 80023fc:      6fdb            ldr     r3, [r3, #124]  ; 0x7c
- 80023fe:      f043 0208       orr.w   r2, r3, #8
- 8002402:      687b            ldr     r3, [r7, #4]
- 8002404:      67da            str     r2, [r3, #124]  ; 0x7c
+ 8002716:      687b            ldr     r3, [r7, #4]
+ 8002718:      6fdb            ldr     r3, [r3, #124]  ; 0x7c
+ 800271a:      f043 0208       orr.w   r2, r3, #8
+ 800271e:      687b            ldr     r3, [r7, #4]
+ 8002720:      67da            str     r2, [r3, #124]  ; 0x7c
     }
 
     /* Call UART Error Call back function if need be --------------------------*/
     if (huart->ErrorCode != HAL_UART_ERROR_NONE)
- 8002406:      687b            ldr     r3, [r7, #4]
- 8002408:      6fdb            ldr     r3, [r3, #124]  ; 0x7c
- 800240a:      2b00            cmp     r3, #0
- 800240c:      d07f            beq.n   800250e <HAL_UART_IRQHandler+0x226>
+ 8002722:      687b            ldr     r3, [r7, #4]
+ 8002724:      6fdb            ldr     r3, [r3, #124]  ; 0x7c
+ 8002726:      2b00            cmp     r3, #0
+ 8002728:      d07f            beq.n   800282a <HAL_UART_IRQHandler+0x226>
     {
       /* UART in mode Receiver ---------------------------------------------------*/
       if (((isrflags & USART_ISR_RXNE) != 0U)
- 800240e:      69fb            ldr     r3, [r7, #28]
- 8002410:      f003 0320       and.w   r3, r3, #32
- 8002414:      2b00            cmp     r3, #0
- 8002416:      d00c            beq.n   8002432 <HAL_UART_IRQHandler+0x14a>
+ 800272a:      69fb            ldr     r3, [r7, #28]
+ 800272c:      f003 0320       and.w   r3, r3, #32
+ 8002730:      2b00            cmp     r3, #0
+ 8002732:      d00c            beq.n   800274e <HAL_UART_IRQHandler+0x14a>
           && ((cr1its & USART_CR1_RXNEIE) != 0U))
- 8002418:      69bb            ldr     r3, [r7, #24]
- 800241a:      f003 0320       and.w   r3, r3, #32
- 800241e:      2b00            cmp     r3, #0
- 8002420:      d007            beq.n   8002432 <HAL_UART_IRQHandler+0x14a>
+ 8002734:      69bb            ldr     r3, [r7, #24]
+ 8002736:      f003 0320       and.w   r3, r3, #32
+ 800273a:      2b00            cmp     r3, #0
+ 800273c:      d007            beq.n   800274e <HAL_UART_IRQHandler+0x14a>
       {
         if (huart->RxISR != NULL)
- 8002422:      687b            ldr     r3, [r7, #4]
- 8002424:      6e1b            ldr     r3, [r3, #96]   ; 0x60
- 8002426:      2b00            cmp     r3, #0
- 8002428:      d003            beq.n   8002432 <HAL_UART_IRQHandler+0x14a>
+ 800273e:      687b            ldr     r3, [r7, #4]
+ 8002740:      6e1b            ldr     r3, [r3, #96]   ; 0x60
+ 8002742:      2b00            cmp     r3, #0
+ 8002744:      d003            beq.n   800274e <HAL_UART_IRQHandler+0x14a>
         {
           huart->RxISR(huart);
- 800242a:      687b            ldr     r3, [r7, #4]
- 800242c:      6e1b            ldr     r3, [r3, #96]   ; 0x60
- 800242e:      6878            ldr     r0, [r7, #4]
- 8002430:      4798            blx     r3
+ 8002746:      687b            ldr     r3, [r7, #4]
+ 8002748:      6e1b            ldr     r3, [r3, #96]   ; 0x60
+ 800274a:      6878            ldr     r0, [r7, #4]
+ 800274c:      4798            blx     r3
         }
       }
 
       /* If Overrun error occurs, or if any error occurs in DMA mode reception,
          consider error as blocking */
       errorcode = huart->ErrorCode;
- 8002432:      687b            ldr     r3, [r7, #4]
- 8002434:      6fdb            ldr     r3, [r3, #124]  ; 0x7c
- 8002436:      60fb            str     r3, [r7, #12]
+ 800274e:      687b            ldr     r3, [r7, #4]
+ 8002750:      6fdb            ldr     r3, [r3, #124]  ; 0x7c
+ 8002752:      60fb            str     r3, [r7, #12]
       if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) ||
- 8002438:      687b            ldr     r3, [r7, #4]
- 800243a:      681b            ldr     r3, [r3, #0]
- 800243c:      689b            ldr     r3, [r3, #8]
- 800243e:      f003 0340       and.w   r3, r3, #64     ; 0x40
- 8002442:      2b40            cmp     r3, #64 ; 0x40
- 8002444:      d004            beq.n   8002450 <HAL_UART_IRQHandler+0x168>
+ 8002754:      687b            ldr     r3, [r7, #4]
+ 8002756:      681b            ldr     r3, [r3, #0]
+ 8002758:      689b            ldr     r3, [r3, #8]
+ 800275a:      f003 0340       and.w   r3, r3, #64     ; 0x40
+ 800275e:      2b40            cmp     r3, #64 ; 0x40
+ 8002760:      d004            beq.n   800276c <HAL_UART_IRQHandler+0x168>
           ((errorcode & HAL_UART_ERROR_ORE) != 0U))
- 8002446:      68fb            ldr     r3, [r7, #12]
- 8002448:      f003 0308       and.w   r3, r3, #8
+ 8002762:      68fb            ldr     r3, [r7, #12]
+ 8002764:      f003 0308       and.w   r3, r3, #8
       if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) ||
- 800244c:      2b00            cmp     r3, #0
- 800244e:      d031            beq.n   80024b4 <HAL_UART_IRQHandler+0x1cc>
+ 8002768:      2b00            cmp     r3, #0
+ 800276a:      d031            beq.n   80027d0 <HAL_UART_IRQHandler+0x1cc>
       {
         /* Blocking error : transfer is aborted
            Set the UART state ready to be able to start again the process,
            Disable Rx Interrupts, and disable Rx DMA request, if ongoing */
         UART_EndRxTransfer(huart);
- 8002450:      6878            ldr     r0, [r7, #4]
- 8002452:      f000 fc36       bl      8002cc2 <UART_EndRxTransfer>
+ 800276c:      6878            ldr     r0, [r7, #4]
+ 800276e:      f000 fc36       bl      8002fde <UART_EndRxTransfer>
 
         /* Disable the UART DMA Rx request if enabled */
         if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
- 8002456:      687b            ldr     r3, [r7, #4]
- 8002458:      681b            ldr     r3, [r3, #0]
- 800245a:      689b            ldr     r3, [r3, #8]
- 800245c:      f003 0340       and.w   r3, r3, #64     ; 0x40
- 8002460:      2b40            cmp     r3, #64 ; 0x40
- 8002462:      d123            bne.n   80024ac <HAL_UART_IRQHandler+0x1c4>
+ 8002772:      687b            ldr     r3, [r7, #4]
+ 8002774:      681b            ldr     r3, [r3, #0]
+ 8002776:      689b            ldr     r3, [r3, #8]
+ 8002778:      f003 0340       and.w   r3, r3, #64     ; 0x40
+ 800277c:      2b40            cmp     r3, #64 ; 0x40
+ 800277e:      d123            bne.n   80027c8 <HAL_UART_IRQHandler+0x1c4>
         {
           CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
- 8002464:      687b            ldr     r3, [r7, #4]
- 8002466:      681b            ldr     r3, [r3, #0]
- 8002468:      689a            ldr     r2, [r3, #8]
- 800246a:      687b            ldr     r3, [r7, #4]
- 800246c:      681b            ldr     r3, [r3, #0]
- 800246e:      f022 0240       bic.w   r2, r2, #64     ; 0x40
- 8002472:      609a            str     r2, [r3, #8]
+ 8002780:      687b            ldr     r3, [r7, #4]
+ 8002782:      681b            ldr     r3, [r3, #0]
+ 8002784:      689a            ldr     r2, [r3, #8]
+ 8002786:      687b            ldr     r3, [r7, #4]
+ 8002788:      681b            ldr     r3, [r3, #0]
+ 800278a:      f022 0240       bic.w   r2, r2, #64     ; 0x40
+ 800278e:      609a            str     r2, [r3, #8]
 
           /* Abort the UART DMA Rx channel */
           if (huart->hdmarx != NULL)
- 8002474:      687b            ldr     r3, [r7, #4]
- 8002476:      6edb            ldr     r3, [r3, #108]  ; 0x6c
- 8002478:      2b00            cmp     r3, #0
- 800247a:      d013            beq.n   80024a4 <HAL_UART_IRQHandler+0x1bc>
+ 8002790:      687b            ldr     r3, [r7, #4]
+ 8002792:      6edb            ldr     r3, [r3, #108]  ; 0x6c
+ 8002794:      2b00            cmp     r3, #0
+ 8002796:      d013            beq.n   80027c0 <HAL_UART_IRQHandler+0x1bc>
           {
             /* Set the UART DMA Abort callback :
                will lead to call HAL_UART_ErrorCallback() at end of DMA abort procedure */
             huart->hdmarx->XferAbortCallback = UART_DMAAbortOnError;
- 800247c:      687b            ldr     r3, [r7, #4]
- 800247e:      6edb            ldr     r3, [r3, #108]  ; 0x6c
- 8002480:      4a26            ldr     r2, [pc, #152]  ; (800251c <HAL_UART_IRQHandler+0x234>)
- 8002482:      651a            str     r2, [r3, #80]   ; 0x50
+ 8002798:      687b            ldr     r3, [r7, #4]
+ 800279a:      6edb            ldr     r3, [r3, #108]  ; 0x6c
+ 800279c:      4a26            ldr     r2, [pc, #152]  ; (8002838 <HAL_UART_IRQHandler+0x234>)
+ 800279e:      651a            str     r2, [r3, #80]   ; 0x50
 
             /* Abort DMA RX */
             if (HAL_DMA_Abort_IT(huart->hdmarx) != HAL_OK)
- 8002484:      687b            ldr     r3, [r7, #4]
- 8002486:      6edb            ldr     r3, [r3, #108]  ; 0x6c
- 8002488:      4618            mov     r0, r3
- 800248a:      f7fe fa73       bl      8000974 <HAL_DMA_Abort_IT>
- 800248e:      4603            mov     r3, r0
- 8002490:      2b00            cmp     r3, #0
- 8002492:      d016            beq.n   80024c2 <HAL_UART_IRQHandler+0x1da>
+ 80027a0:      687b            ldr     r3, [r7, #4]
+ 80027a2:      6edb            ldr     r3, [r3, #108]  ; 0x6c
+ 80027a4:      4618            mov     r0, r3
+ 80027a6:      f7fe f8e5       bl      8000974 <HAL_DMA_Abort_IT>
+ 80027aa:      4603            mov     r3, r0
+ 80027ac:      2b00            cmp     r3, #0
+ 80027ae:      d016            beq.n   80027de <HAL_UART_IRQHandler+0x1da>
             {
               /* Call Directly huart->hdmarx->XferAbortCallback function in case of error */
               huart->hdmarx->XferAbortCallback(huart->hdmarx);
- 8002494:      687b            ldr     r3, [r7, #4]
- 8002496:      6edb            ldr     r3, [r3, #108]  ; 0x6c
- 8002498:      6d1b            ldr     r3, [r3, #80]   ; 0x50
- 800249a:      687a            ldr     r2, [r7, #4]
- 800249c:      6ed2            ldr     r2, [r2, #108]  ; 0x6c
- 800249e:      4610            mov     r0, r2
- 80024a0:      4798            blx     r3
+ 80027b0:      687b            ldr     r3, [r7, #4]
+ 80027b2:      6edb            ldr     r3, [r3, #108]  ; 0x6c
+ 80027b4:      6d1b            ldr     r3, [r3, #80]   ; 0x50
+ 80027b6:      687a            ldr     r2, [r7, #4]
+ 80027b8:      6ed2            ldr     r2, [r2, #108]  ; 0x6c
+ 80027ba:      4610            mov     r0, r2
+ 80027bc:      4798            blx     r3
         if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
- 80024a2:      e00e            b.n     80024c2 <HAL_UART_IRQHandler+0x1da>
+ 80027be:      e00e            b.n     80027de <HAL_UART_IRQHandler+0x1da>
 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
             /*Call registered error callback*/
             huart->ErrorCallback(huart);
 #else
             /*Call legacy weak error callback*/
             HAL_UART_ErrorCallback(huart);
- 80024a4:      6878            ldr     r0, [r7, #4]
- 80024a6:      f000 f845       bl      8002534 <HAL_UART_ErrorCallback>
+ 80027c0:      6878            ldr     r0, [r7, #4]
+ 80027c2:      f000 f845       bl      8002850 <HAL_UART_ErrorCallback>
         if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
- 80024aa:      e00a            b.n     80024c2 <HAL_UART_IRQHandler+0x1da>
+ 80027c6:      e00a            b.n     80027de <HAL_UART_IRQHandler+0x1da>
 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
           /*Call registered error callback*/
           huart->ErrorCallback(huart);
 #else
           /*Call legacy weak error callback*/
           HAL_UART_ErrorCallback(huart);
- 80024ac:      6878            ldr     r0, [r7, #4]
- 80024ae:      f000 f841       bl      8002534 <HAL_UART_ErrorCallback>
+ 80027c8:      6878            ldr     r0, [r7, #4]
+ 80027ca:      f000 f841       bl      8002850 <HAL_UART_ErrorCallback>
         if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
- 80024b2:      e006            b.n     80024c2 <HAL_UART_IRQHandler+0x1da>
+ 80027ce:      e006            b.n     80027de <HAL_UART_IRQHandler+0x1da>
 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
         /*Call registered error callback*/
         huart->ErrorCallback(huart);
 #else
         /*Call legacy weak error callback*/
         HAL_UART_ErrorCallback(huart);
- 80024b4:      6878            ldr     r0, [r7, #4]
- 80024b6:      f000 f83d       bl      8002534 <HAL_UART_ErrorCallback>
+ 80027d0:      6878            ldr     r0, [r7, #4]
+ 80027d2:      f000 f83d       bl      8002850 <HAL_UART_ErrorCallback>
 #endif /* USE_HAL_UART_REGISTER_CALLBACKS */
         huart->ErrorCode = HAL_UART_ERROR_NONE;
- 80024ba:      687b            ldr     r3, [r7, #4]
- 80024bc:      2200            movs    r2, #0
- 80024be:      67da            str     r2, [r3, #124]  ; 0x7c
+ 80027d6:      687b            ldr     r3, [r7, #4]
+ 80027d8:      2200            movs    r2, #0
+ 80027da:      67da            str     r2, [r3, #124]  ; 0x7c
       }
     }
     return;
- 80024c0:      e025            b.n     800250e <HAL_UART_IRQHandler+0x226>
+ 80027dc:      e025            b.n     800282a <HAL_UART_IRQHandler+0x226>
         if (HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR))
- 80024c2:      bf00            nop
+ 80027de:      bf00            nop
     return;
- 80024c4:      e023            b.n     800250e <HAL_UART_IRQHandler+0x226>
+ 80027e0:      e023            b.n     800282a <HAL_UART_IRQHandler+0x226>
 
   } /* End if some error occurs */
 
   /* UART in mode Transmitter ------------------------------------------------*/
   if (((isrflags & USART_ISR_TXE) != 0U)
- 80024c6:      69fb            ldr     r3, [r7, #28]
- 80024c8:      f003 0380       and.w   r3, r3, #128    ; 0x80
- 80024cc:      2b00            cmp     r3, #0
- 80024ce:      d00d            beq.n   80024ec <HAL_UART_IRQHandler+0x204>
+ 80027e2:      69fb            ldr     r3, [r7, #28]
+ 80027e4:      f003 0380       and.w   r3, r3, #128    ; 0x80
+ 80027e8:      2b00            cmp     r3, #0
+ 80027ea:      d00d            beq.n   8002808 <HAL_UART_IRQHandler+0x204>
       && ((cr1its & USART_CR1_TXEIE) != 0U))
- 80024d0:      69bb            ldr     r3, [r7, #24]
- 80024d2:      f003 0380       and.w   r3, r3, #128    ; 0x80
- 80024d6:      2b00            cmp     r3, #0
- 80024d8:      d008            beq.n   80024ec <HAL_UART_IRQHandler+0x204>
+ 80027ec:      69bb            ldr     r3, [r7, #24]
+ 80027ee:      f003 0380       and.w   r3, r3, #128    ; 0x80
+ 80027f2:      2b00            cmp     r3, #0
+ 80027f4:      d008            beq.n   8002808 <HAL_UART_IRQHandler+0x204>
   {
     if (huart->TxISR != NULL)
- 80024da:      687b            ldr     r3, [r7, #4]
- 80024dc:      6e5b            ldr     r3, [r3, #100]  ; 0x64
- 80024de:      2b00            cmp     r3, #0
- 80024e0:      d017            beq.n   8002512 <HAL_UART_IRQHandler+0x22a>
+ 80027f6:      687b            ldr     r3, [r7, #4]
+ 80027f8:      6e5b            ldr     r3, [r3, #100]  ; 0x64
+ 80027fa:      2b00            cmp     r3, #0
+ 80027fc:      d017            beq.n   800282e <HAL_UART_IRQHandler+0x22a>
     {
       huart->TxISR(huart);
- 80024e2:      687b            ldr     r3, [r7, #4]
- 80024e4:      6e5b            ldr     r3, [r3, #100]  ; 0x64
- 80024e6:      6878            ldr     r0, [r7, #4]
- 80024e8:      4798            blx     r3
+ 80027fe:      687b            ldr     r3, [r7, #4]
+ 8002800:      6e5b            ldr     r3, [r3, #100]  ; 0x64
+ 8002802:      6878            ldr     r0, [r7, #4]
+ 8002804:      4798            blx     r3
     }
     return;
- 80024ea:      e012            b.n     8002512 <HAL_UART_IRQHandler+0x22a>
+ 8002806:      e012            b.n     800282e <HAL_UART_IRQHandler+0x22a>
   }
 
   /* UART in mode Transmitter (transmission end) -----------------------------*/
   if (((isrflags & USART_ISR_TC) != 0U) && ((cr1its & USART_CR1_TCIE) != 0U))
- 80024ec:      69fb            ldr     r3, [r7, #28]
- 80024ee:      f003 0340       and.w   r3, r3, #64     ; 0x40
- 80024f2:      2b00            cmp     r3, #0
- 80024f4:      d00e            beq.n   8002514 <HAL_UART_IRQHandler+0x22c>
- 80024f6:      69bb            ldr     r3, [r7, #24]
- 80024f8:      f003 0340       and.w   r3, r3, #64     ; 0x40
- 80024fc:      2b00            cmp     r3, #0
- 80024fe:      d009            beq.n   8002514 <HAL_UART_IRQHandler+0x22c>
+ 8002808:      69fb            ldr     r3, [r7, #28]
+ 800280a:      f003 0340       and.w   r3, r3, #64     ; 0x40
+ 800280e:      2b00            cmp     r3, #0
+ 8002810:      d00e            beq.n   8002830 <HAL_UART_IRQHandler+0x22c>
+ 8002812:      69bb            ldr     r3, [r7, #24]
+ 8002814:      f003 0340       and.w   r3, r3, #64     ; 0x40
+ 8002818:      2b00            cmp     r3, #0
+ 800281a:      d009            beq.n   8002830 <HAL_UART_IRQHandler+0x22c>
   {
     UART_EndTransmit_IT(huart);
- 8002500:      6878            ldr     r0, [r7, #4]
- 8002502:      f000 fc14       bl      8002d2e <UART_EndTransmit_IT>
+ 800281c:      6878            ldr     r0, [r7, #4]
+ 800281e:      f000 fc14       bl      800304a <UART_EndTransmit_IT>
     return;
- 8002506:      bf00            nop
- 8002508:      e004            b.n     8002514 <HAL_UART_IRQHandler+0x22c>
+ 8002822:      bf00            nop
+ 8002824:      e004            b.n     8002830 <HAL_UART_IRQHandler+0x22c>
       return;
- 800250a:      bf00            nop
- 800250c:      e002            b.n     8002514 <HAL_UART_IRQHandler+0x22c>
+ 8002826:      bf00            nop
+ 8002828:      e002            b.n     8002830 <HAL_UART_IRQHandler+0x22c>
     return;
- 800250e:      bf00            nop
- 8002510:      e000            b.n     8002514 <HAL_UART_IRQHandler+0x22c>
+ 800282a:      bf00            nop
+ 800282c:      e000            b.n     8002830 <HAL_UART_IRQHandler+0x22c>
     return;
- 8002512:      bf00            nop
+ 800282e:      bf00            nop
   }
 
 }
- 8002514:      3720            adds    r7, #32
- 8002516:      46bd            mov     sp, r7
- 8002518:      bd80            pop     {r7, pc}
- 800251a:      bf00            nop
- 800251c:      08002d03        .word   0x08002d03
+ 8002830:      3720            adds    r7, #32
+ 8002832:      46bd            mov     sp, r7
+ 8002834:      bd80            pop     {r7, pc}
+ 8002836:      bf00            nop
+ 8002838:      0800301f        .word   0x0800301f
 
-08002520 <HAL_UART_TxCpltCallback>:
+0800283c <HAL_UART_TxCpltCallback>:
   * @brief Tx Transfer completed callback.
   * @param huart UART handle.
   * @retval None
   */
 __weak void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
 {
- 8002520:      b480            push    {r7}
- 8002522:      b083            sub     sp, #12
- 8002524:      af00            add     r7, sp, #0
- 8002526:      6078            str     r0, [r7, #4]
+ 800283c:      b480            push    {r7}
+ 800283e:      b083            sub     sp, #12
+ 8002840:      af00            add     r7, sp, #0
+ 8002842:      6078            str     r0, [r7, #4]
   UNUSED(huart);
 
   /* NOTE : This function should not be modified, when the callback is needed,
             the HAL_UART_TxCpltCallback can be implemented in the user file.
    */
 }
- 8002528:      bf00            nop
- 800252a:      370c            adds    r7, #12
- 800252c:      46bd            mov     sp, r7
- 800252e:      f85d 7b04       ldr.w   r7, [sp], #4
- 8002532:      4770            bx      lr
+ 8002844:      bf00            nop
+ 8002846:      370c            adds    r7, #12
+ 8002848:      46bd            mov     sp, r7
+ 800284a:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800284e:      4770            bx      lr
 
-08002534 <HAL_UART_ErrorCallback>:
+08002850 <HAL_UART_ErrorCallback>:
   * @brief  UART error callback.
   * @param  huart UART handle.
   * @retval None
   */
 __weak void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
 {
- 8002534:      b480            push    {r7}
- 8002536:      b083            sub     sp, #12
- 8002538:      af00            add     r7, sp, #0
- 800253a:      6078            str     r0, [r7, #4]
+ 8002850:      b480            push    {r7}
+ 8002852:      b083            sub     sp, #12
+ 8002854:      af00            add     r7, sp, #0
+ 8002856:      6078            str     r0, [r7, #4]
   UNUSED(huart);
 
   /* NOTE : This function should not be modified, when the callback is needed,
             the HAL_UART_ErrorCallback can be implemented in the user file.
    */
 }
- 800253c:      bf00            nop
- 800253e:      370c            adds    r7, #12
- 8002540:      46bd            mov     sp, r7
- 8002542:      f85d 7b04       ldr.w   r7, [sp], #4
- 8002546:      4770            bx      lr
+ 8002858:      bf00            nop
+ 800285a:      370c            adds    r7, #12
+ 800285c:      46bd            mov     sp, r7
+ 800285e:      f85d 7b04       ldr.w   r7, [sp], #4
+ 8002862:      4770            bx      lr
 
-08002548 <UART_SetConfig>:
+08002864 <UART_SetConfig>:
   * @brief Configure the UART peripheral.
   * @param huart UART handle.
   * @retval HAL status
   */
 HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart)
 {
- 8002548:      b580            push    {r7, lr}
- 800254a:      b088            sub     sp, #32
- 800254c:      af00            add     r7, sp, #0
- 800254e:      6078            str     r0, [r7, #4]
+ 8002864:      b580            push    {r7, lr}
+ 8002866:      b088            sub     sp, #32
+ 8002868:      af00            add     r7, sp, #0
+ 800286a:      6078            str     r0, [r7, #4]
   uint32_t tmpreg;
   uint16_t brrtemp;
   UART_ClockSourceTypeDef clocksource;
   uint32_t usartdiv                   = 0x00000000U;
- 8002550:      2300            movs    r3, #0
- 8002552:      61bb            str     r3, [r7, #24]
+ 800286c:      2300            movs    r3, #0
+ 800286e:      61bb            str     r3, [r7, #24]
   HAL_StatusTypeDef ret               = HAL_OK;
- 8002554:      2300            movs    r3, #0
- 8002556:      75fb            strb    r3, [r7, #23]
+ 8002870:      2300            movs    r3, #0
+ 8002872:      75fb            strb    r3, [r7, #23]
   *  the UART Word Length, Parity, Mode and oversampling:
   *  set the M bits according to huart->Init.WordLength value
   *  set PCE and PS bits according to huart->Init.Parity value
   *  set TE and RE bits according to huart->Init.Mode value
   *  set OVER8 bit according to huart->Init.OverSampling value */
   tmpreg = (uint32_t)huart->Init.WordLength | huart->Init.Parity | huart->Init.Mode | huart->Init.OverSampling ;
- 8002558:      687b            ldr     r3, [r7, #4]
- 800255a:      689a            ldr     r2, [r3, #8]
- 800255c:      687b            ldr     r3, [r7, #4]
- 800255e:      691b            ldr     r3, [r3, #16]
- 8002560:      431a            orrs    r2, r3
- 8002562:      687b            ldr     r3, [r7, #4]
- 8002564:      695b            ldr     r3, [r3, #20]
- 8002566:      431a            orrs    r2, r3
- 8002568:      687b            ldr     r3, [r7, #4]
- 800256a:      69db            ldr     r3, [r3, #28]
- 800256c:      4313            orrs    r3, r2
- 800256e:      613b            str     r3, [r7, #16]
+ 8002874:      687b            ldr     r3, [r7, #4]
+ 8002876:      689a            ldr     r2, [r3, #8]
+ 8002878:      687b            ldr     r3, [r7, #4]
+ 800287a:      691b            ldr     r3, [r3, #16]
+ 800287c:      431a            orrs    r2, r3
+ 800287e:      687b            ldr     r3, [r7, #4]
+ 8002880:      695b            ldr     r3, [r3, #20]
+ 8002882:      431a            orrs    r2, r3
+ 8002884:      687b            ldr     r3, [r7, #4]
+ 8002886:      69db            ldr     r3, [r3, #28]
+ 8002888:      4313            orrs    r3, r2
+ 800288a:      613b            str     r3, [r7, #16]
   MODIFY_REG(huart->Instance->CR1, USART_CR1_FIELDS, tmpreg);
- 8002570:      687b            ldr     r3, [r7, #4]
- 8002572:      681b            ldr     r3, [r3, #0]
- 8002574:      681a            ldr     r2, [r3, #0]
- 8002576:      4bb1            ldr     r3, [pc, #708]  ; (800283c <UART_SetConfig+0x2f4>)
- 8002578:      4013            ands    r3, r2
- 800257a:      687a            ldr     r2, [r7, #4]
- 800257c:      6812            ldr     r2, [r2, #0]
- 800257e:      6939            ldr     r1, [r7, #16]
- 8002580:      430b            orrs    r3, r1
- 8002582:      6013            str     r3, [r2, #0]
+ 800288c:      687b            ldr     r3, [r7, #4]
+ 800288e:      681b            ldr     r3, [r3, #0]
+ 8002890:      681a            ldr     r2, [r3, #0]
+ 8002892:      4bb1            ldr     r3, [pc, #708]  ; (8002b58 <UART_SetConfig+0x2f4>)
+ 8002894:      4013            ands    r3, r2
+ 8002896:      687a            ldr     r2, [r7, #4]
+ 8002898:      6812            ldr     r2, [r2, #0]
+ 800289a:      6939            ldr     r1, [r7, #16]
+ 800289c:      430b            orrs    r3, r1
+ 800289e:      6013            str     r3, [r2, #0]
 
   /*-------------------------- USART CR2 Configuration -----------------------*/
   /* Configure the UART Stop Bits: Set STOP[13:12] bits according
   * to huart->Init.StopBits value */
   MODIFY_REG(huart->Instance->CR2, USART_CR2_STOP, huart->Init.StopBits);
- 8002584:      687b            ldr     r3, [r7, #4]
- 8002586:      681b            ldr     r3, [r3, #0]
- 8002588:      685b            ldr     r3, [r3, #4]
- 800258a:      f423 5140       bic.w   r1, r3, #12288  ; 0x3000
- 800258e:      687b            ldr     r3, [r7, #4]
- 8002590:      68da            ldr     r2, [r3, #12]
- 8002592:      687b            ldr     r3, [r7, #4]
- 8002594:      681b            ldr     r3, [r3, #0]
- 8002596:      430a            orrs    r2, r1
- 8002598:      605a            str     r2, [r3, #4]
+ 80028a0:      687b            ldr     r3, [r7, #4]
+ 80028a2:      681b            ldr     r3, [r3, #0]
+ 80028a4:      685b            ldr     r3, [r3, #4]
+ 80028a6:      f423 5140       bic.w   r1, r3, #12288  ; 0x3000
+ 80028aa:      687b            ldr     r3, [r7, #4]
+ 80028ac:      68da            ldr     r2, [r3, #12]
+ 80028ae:      687b            ldr     r3, [r7, #4]
+ 80028b0:      681b            ldr     r3, [r3, #0]
+ 80028b2:      430a            orrs    r2, r1
+ 80028b4:      605a            str     r2, [r3, #4]
   /* Configure
   * - UART HardWare Flow Control: set CTSE and RTSE bits according
   *   to huart->Init.HwFlowCtl value
   * - one-bit sampling method versus three samples' majority rule according
   *   to huart->Init.OneBitSampling (not applicable to LPUART) */
   tmpreg = (uint32_t)huart->Init.HwFlowCtl;
- 800259a:      687b            ldr     r3, [r7, #4]
- 800259c:      699b            ldr     r3, [r3, #24]
- 800259e:      613b            str     r3, [r7, #16]
+ 80028b6:      687b            ldr     r3, [r7, #4]
+ 80028b8:      699b            ldr     r3, [r3, #24]
+ 80028ba:      613b            str     r3, [r7, #16]
 
   tmpreg |= huart->Init.OneBitSampling;
- 80025a0:      687b            ldr     r3, [r7, #4]
- 80025a2:      6a1b            ldr     r3, [r3, #32]
- 80025a4:      693a            ldr     r2, [r7, #16]
- 80025a6:      4313            orrs    r3, r2
- 80025a8:      613b            str     r3, [r7, #16]
+ 80028bc:      687b            ldr     r3, [r7, #4]
+ 80028be:      6a1b            ldr     r3, [r3, #32]
+ 80028c0:      693a            ldr     r2, [r7, #16]
+ 80028c2:      4313            orrs    r3, r2
+ 80028c4:      613b            str     r3, [r7, #16]
   MODIFY_REG(huart->Instance->CR3, USART_CR3_FIELDS, tmpreg);
- 80025aa:      687b            ldr     r3, [r7, #4]
- 80025ac:      681b            ldr     r3, [r3, #0]
- 80025ae:      689b            ldr     r3, [r3, #8]
- 80025b0:      f423 6130       bic.w   r1, r3, #2816   ; 0xb00
- 80025b4:      687b            ldr     r3, [r7, #4]
- 80025b6:      681b            ldr     r3, [r3, #0]
- 80025b8:      693a            ldr     r2, [r7, #16]
- 80025ba:      430a            orrs    r2, r1
- 80025bc:      609a            str     r2, [r3, #8]
+ 80028c6:      687b            ldr     r3, [r7, #4]
+ 80028c8:      681b            ldr     r3, [r3, #0]
+ 80028ca:      689b            ldr     r3, [r3, #8]
+ 80028cc:      f423 6130       bic.w   r1, r3, #2816   ; 0xb00
+ 80028d0:      687b            ldr     r3, [r7, #4]
+ 80028d2:      681b            ldr     r3, [r3, #0]
+ 80028d4:      693a            ldr     r2, [r7, #16]
+ 80028d6:      430a            orrs    r2, r1
+ 80028d8:      609a            str     r2, [r3, #8]
 
 
   /*-------------------------- USART BRR Configuration -----------------------*/
   UART_GETCLOCKSOURCE(huart, clocksource);
- 80025be:      687b            ldr     r3, [r7, #4]
- 80025c0:      681b            ldr     r3, [r3, #0]
- 80025c2:      4a9f            ldr     r2, [pc, #636]  ; (8002840 <UART_SetConfig+0x2f8>)
- 80025c4:      4293            cmp     r3, r2
- 80025c6:      d121            bne.n   800260c <UART_SetConfig+0xc4>
- 80025c8:      4b9e            ldr     r3, [pc, #632]  ; (8002844 <UART_SetConfig+0x2fc>)
- 80025ca:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 80025ce:      f003 0303       and.w   r3, r3, #3
- 80025d2:      2b03            cmp     r3, #3
- 80025d4:      d816            bhi.n   8002604 <UART_SetConfig+0xbc>
- 80025d6:      a201            add     r2, pc, #4      ; (adr r2, 80025dc <UART_SetConfig+0x94>)
- 80025d8:      f852 f023       ldr.w   pc, [r2, r3, lsl #2]
- 80025dc:      080025ed        .word   0x080025ed
- 80025e0:      080025f9        .word   0x080025f9
- 80025e4:      080025f3        .word   0x080025f3
- 80025e8:      080025ff        .word   0x080025ff
- 80025ec:      2301            movs    r3, #1
- 80025ee:      77fb            strb    r3, [r7, #31]
- 80025f0:      e151            b.n     8002896 <UART_SetConfig+0x34e>
- 80025f2:      2302            movs    r3, #2
- 80025f4:      77fb            strb    r3, [r7, #31]
- 80025f6:      e14e            b.n     8002896 <UART_SetConfig+0x34e>
- 80025f8:      2304            movs    r3, #4
- 80025fa:      77fb            strb    r3, [r7, #31]
- 80025fc:      e14b            b.n     8002896 <UART_SetConfig+0x34e>
- 80025fe:      2308            movs    r3, #8
- 8002600:      77fb            strb    r3, [r7, #31]
- 8002602:      e148            b.n     8002896 <UART_SetConfig+0x34e>
- 8002604:      2310            movs    r3, #16
- 8002606:      77fb            strb    r3, [r7, #31]
- 8002608:      bf00            nop
- 800260a:      e144            b.n     8002896 <UART_SetConfig+0x34e>
- 800260c:      687b            ldr     r3, [r7, #4]
- 800260e:      681b            ldr     r3, [r3, #0]
- 8002610:      4a8d            ldr     r2, [pc, #564]  ; (8002848 <UART_SetConfig+0x300>)
- 8002612:      4293            cmp     r3, r2
- 8002614:      d134            bne.n   8002680 <UART_SetConfig+0x138>
- 8002616:      4b8b            ldr     r3, [pc, #556]  ; (8002844 <UART_SetConfig+0x2fc>)
- 8002618:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 800261c:      f003 030c       and.w   r3, r3, #12
- 8002620:      2b0c            cmp     r3, #12
- 8002622:      d829            bhi.n   8002678 <UART_SetConfig+0x130>
- 8002624:      a201            add     r2, pc, #4      ; (adr r2, 800262c <UART_SetConfig+0xe4>)
- 8002626:      f852 f023       ldr.w   pc, [r2, r3, lsl #2]
- 800262a:      bf00            nop
- 800262c:      08002661        .word   0x08002661
- 8002630:      08002679        .word   0x08002679
- 8002634:      08002679        .word   0x08002679
- 8002638:      08002679        .word   0x08002679
- 800263c:      0800266d        .word   0x0800266d
- 8002640:      08002679        .word   0x08002679
- 8002644:      08002679        .word   0x08002679
- 8002648:      08002679        .word   0x08002679
- 800264c:      08002667        .word   0x08002667
- 8002650:      08002679        .word   0x08002679
- 8002654:      08002679        .word   0x08002679
- 8002658:      08002679        .word   0x08002679
- 800265c:      08002673        .word   0x08002673
- 8002660:      2300            movs    r3, #0
- 8002662:      77fb            strb    r3, [r7, #31]
- 8002664:      e117            b.n     8002896 <UART_SetConfig+0x34e>
- 8002666:      2302            movs    r3, #2
- 8002668:      77fb            strb    r3, [r7, #31]
- 800266a:      e114            b.n     8002896 <UART_SetConfig+0x34e>
- 800266c:      2304            movs    r3, #4
- 800266e:      77fb            strb    r3, [r7, #31]
- 8002670:      e111            b.n     8002896 <UART_SetConfig+0x34e>
- 8002672:      2308            movs    r3, #8
- 8002674:      77fb            strb    r3, [r7, #31]
- 8002676:      e10e            b.n     8002896 <UART_SetConfig+0x34e>
- 8002678:      2310            movs    r3, #16
- 800267a:      77fb            strb    r3, [r7, #31]
- 800267c:      bf00            nop
- 800267e:      e10a            b.n     8002896 <UART_SetConfig+0x34e>
- 8002680:      687b            ldr     r3, [r7, #4]
- 8002682:      681b            ldr     r3, [r3, #0]
- 8002684:      4a71            ldr     r2, [pc, #452]  ; (800284c <UART_SetConfig+0x304>)
- 8002686:      4293            cmp     r3, r2
- 8002688:      d120            bne.n   80026cc <UART_SetConfig+0x184>
- 800268a:      4b6e            ldr     r3, [pc, #440]  ; (8002844 <UART_SetConfig+0x2fc>)
- 800268c:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 8002690:      f003 0330       and.w   r3, r3, #48     ; 0x30
- 8002694:      2b10            cmp     r3, #16
- 8002696:      d00f            beq.n   80026b8 <UART_SetConfig+0x170>
- 8002698:      2b10            cmp     r3, #16
- 800269a:      d802            bhi.n   80026a2 <UART_SetConfig+0x15a>
- 800269c:      2b00            cmp     r3, #0
- 800269e:      d005            beq.n   80026ac <UART_SetConfig+0x164>
- 80026a0:      e010            b.n     80026c4 <UART_SetConfig+0x17c>
- 80026a2:      2b20            cmp     r3, #32
- 80026a4:      d005            beq.n   80026b2 <UART_SetConfig+0x16a>
- 80026a6:      2b30            cmp     r3, #48 ; 0x30
- 80026a8:      d009            beq.n   80026be <UART_SetConfig+0x176>
- 80026aa:      e00b            b.n     80026c4 <UART_SetConfig+0x17c>
- 80026ac:      2300            movs    r3, #0
- 80026ae:      77fb            strb    r3, [r7, #31]
- 80026b0:      e0f1            b.n     8002896 <UART_SetConfig+0x34e>
- 80026b2:      2302            movs    r3, #2
- 80026b4:      77fb            strb    r3, [r7, #31]
- 80026b6:      e0ee            b.n     8002896 <UART_SetConfig+0x34e>
- 80026b8:      2304            movs    r3, #4
- 80026ba:      77fb            strb    r3, [r7, #31]
- 80026bc:      e0eb            b.n     8002896 <UART_SetConfig+0x34e>
- 80026be:      2308            movs    r3, #8
- 80026c0:      77fb            strb    r3, [r7, #31]
- 80026c2:      e0e8            b.n     8002896 <UART_SetConfig+0x34e>
- 80026c4:      2310            movs    r3, #16
- 80026c6:      77fb            strb    r3, [r7, #31]
- 80026c8:      bf00            nop
- 80026ca:      e0e4            b.n     8002896 <UART_SetConfig+0x34e>
- 80026cc:      687b            ldr     r3, [r7, #4]
- 80026ce:      681b            ldr     r3, [r3, #0]
- 80026d0:      4a5f            ldr     r2, [pc, #380]  ; (8002850 <UART_SetConfig+0x308>)
- 80026d2:      4293            cmp     r3, r2
- 80026d4:      d120            bne.n   8002718 <UART_SetConfig+0x1d0>
- 80026d6:      4b5b            ldr     r3, [pc, #364]  ; (8002844 <UART_SetConfig+0x2fc>)
- 80026d8:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 80026dc:      f003 03c0       and.w   r3, r3, #192    ; 0xc0
- 80026e0:      2b40            cmp     r3, #64 ; 0x40
- 80026e2:      d00f            beq.n   8002704 <UART_SetConfig+0x1bc>
- 80026e4:      2b40            cmp     r3, #64 ; 0x40
- 80026e6:      d802            bhi.n   80026ee <UART_SetConfig+0x1a6>
- 80026e8:      2b00            cmp     r3, #0
- 80026ea:      d005            beq.n   80026f8 <UART_SetConfig+0x1b0>
- 80026ec:      e010            b.n     8002710 <UART_SetConfig+0x1c8>
- 80026ee:      2b80            cmp     r3, #128        ; 0x80
- 80026f0:      d005            beq.n   80026fe <UART_SetConfig+0x1b6>
- 80026f2:      2bc0            cmp     r3, #192        ; 0xc0
- 80026f4:      d009            beq.n   800270a <UART_SetConfig+0x1c2>
- 80026f6:      e00b            b.n     8002710 <UART_SetConfig+0x1c8>
- 80026f8:      2300            movs    r3, #0
- 80026fa:      77fb            strb    r3, [r7, #31]
- 80026fc:      e0cb            b.n     8002896 <UART_SetConfig+0x34e>
- 80026fe:      2302            movs    r3, #2
- 8002700:      77fb            strb    r3, [r7, #31]
- 8002702:      e0c8            b.n     8002896 <UART_SetConfig+0x34e>
- 8002704:      2304            movs    r3, #4
- 8002706:      77fb            strb    r3, [r7, #31]
- 8002708:      e0c5            b.n     8002896 <UART_SetConfig+0x34e>
- 800270a:      2308            movs    r3, #8
- 800270c:      77fb            strb    r3, [r7, #31]
- 800270e:      e0c2            b.n     8002896 <UART_SetConfig+0x34e>
- 8002710:      2310            movs    r3, #16
- 8002712:      77fb            strb    r3, [r7, #31]
- 8002714:      bf00            nop
- 8002716:      e0be            b.n     8002896 <UART_SetConfig+0x34e>
- 8002718:      687b            ldr     r3, [r7, #4]
- 800271a:      681b            ldr     r3, [r3, #0]
- 800271c:      4a4d            ldr     r2, [pc, #308]  ; (8002854 <UART_SetConfig+0x30c>)
- 800271e:      4293            cmp     r3, r2
- 8002720:      d124            bne.n   800276c <UART_SetConfig+0x224>
- 8002722:      4b48            ldr     r3, [pc, #288]  ; (8002844 <UART_SetConfig+0x2fc>)
- 8002724:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 8002728:      f403 7340       and.w   r3, r3, #768    ; 0x300
- 800272c:      f5b3 7f80       cmp.w   r3, #256        ; 0x100
- 8002730:      d012            beq.n   8002758 <UART_SetConfig+0x210>
- 8002732:      f5b3 7f80       cmp.w   r3, #256        ; 0x100
- 8002736:      d802            bhi.n   800273e <UART_SetConfig+0x1f6>
- 8002738:      2b00            cmp     r3, #0
- 800273a:      d007            beq.n   800274c <UART_SetConfig+0x204>
- 800273c:      e012            b.n     8002764 <UART_SetConfig+0x21c>
- 800273e:      f5b3 7f00       cmp.w   r3, #512        ; 0x200
- 8002742:      d006            beq.n   8002752 <UART_SetConfig+0x20a>
- 8002744:      f5b3 7f40       cmp.w   r3, #768        ; 0x300
- 8002748:      d009            beq.n   800275e <UART_SetConfig+0x216>
- 800274a:      e00b            b.n     8002764 <UART_SetConfig+0x21c>
- 800274c:      2300            movs    r3, #0
- 800274e:      77fb            strb    r3, [r7, #31]
- 8002750:      e0a1            b.n     8002896 <UART_SetConfig+0x34e>
- 8002752:      2302            movs    r3, #2
- 8002754:      77fb            strb    r3, [r7, #31]
- 8002756:      e09e            b.n     8002896 <UART_SetConfig+0x34e>
- 8002758:      2304            movs    r3, #4
- 800275a:      77fb            strb    r3, [r7, #31]
- 800275c:      e09b            b.n     8002896 <UART_SetConfig+0x34e>
- 800275e:      2308            movs    r3, #8
- 8002760:      77fb            strb    r3, [r7, #31]
- 8002762:      e098            b.n     8002896 <UART_SetConfig+0x34e>
- 8002764:      2310            movs    r3, #16
- 8002766:      77fb            strb    r3, [r7, #31]
- 8002768:      bf00            nop
- 800276a:      e094            b.n     8002896 <UART_SetConfig+0x34e>
- 800276c:      687b            ldr     r3, [r7, #4]
- 800276e:      681b            ldr     r3, [r3, #0]
- 8002770:      4a39            ldr     r2, [pc, #228]  ; (8002858 <UART_SetConfig+0x310>)
- 8002772:      4293            cmp     r3, r2
- 8002774:      d124            bne.n   80027c0 <UART_SetConfig+0x278>
- 8002776:      4b33            ldr     r3, [pc, #204]  ; (8002844 <UART_SetConfig+0x2fc>)
- 8002778:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 800277c:      f403 6340       and.w   r3, r3, #3072   ; 0xc00
- 8002780:      f5b3 6f80       cmp.w   r3, #1024       ; 0x400
- 8002784:      d012            beq.n   80027ac <UART_SetConfig+0x264>
- 8002786:      f5b3 6f80       cmp.w   r3, #1024       ; 0x400
- 800278a:      d802            bhi.n   8002792 <UART_SetConfig+0x24a>
- 800278c:      2b00            cmp     r3, #0
- 800278e:      d007            beq.n   80027a0 <UART_SetConfig+0x258>
- 8002790:      e012            b.n     80027b8 <UART_SetConfig+0x270>
- 8002792:      f5b3 6f00       cmp.w   r3, #2048       ; 0x800
- 8002796:      d006            beq.n   80027a6 <UART_SetConfig+0x25e>
- 8002798:      f5b3 6f40       cmp.w   r3, #3072       ; 0xc00
- 800279c:      d009            beq.n   80027b2 <UART_SetConfig+0x26a>
- 800279e:      e00b            b.n     80027b8 <UART_SetConfig+0x270>
- 80027a0:      2301            movs    r3, #1
- 80027a2:      77fb            strb    r3, [r7, #31]
- 80027a4:      e077            b.n     8002896 <UART_SetConfig+0x34e>
- 80027a6:      2302            movs    r3, #2
- 80027a8:      77fb            strb    r3, [r7, #31]
- 80027aa:      e074            b.n     8002896 <UART_SetConfig+0x34e>
- 80027ac:      2304            movs    r3, #4
- 80027ae:      77fb            strb    r3, [r7, #31]
- 80027b0:      e071            b.n     8002896 <UART_SetConfig+0x34e>
- 80027b2:      2308            movs    r3, #8
- 80027b4:      77fb            strb    r3, [r7, #31]
- 80027b6:      e06e            b.n     8002896 <UART_SetConfig+0x34e>
- 80027b8:      2310            movs    r3, #16
- 80027ba:      77fb            strb    r3, [r7, #31]
- 80027bc:      bf00            nop
- 80027be:      e06a            b.n     8002896 <UART_SetConfig+0x34e>
- 80027c0:      687b            ldr     r3, [r7, #4]
- 80027c2:      681b            ldr     r3, [r3, #0]
- 80027c4:      4a25            ldr     r2, [pc, #148]  ; (800285c <UART_SetConfig+0x314>)
- 80027c6:      4293            cmp     r3, r2
- 80027c8:      d124            bne.n   8002814 <UART_SetConfig+0x2cc>
- 80027ca:      4b1e            ldr     r3, [pc, #120]  ; (8002844 <UART_SetConfig+0x2fc>)
- 80027cc:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 80027d0:      f403 5340       and.w   r3, r3, #12288  ; 0x3000
- 80027d4:      f5b3 5f80       cmp.w   r3, #4096       ; 0x1000
- 80027d8:      d012            beq.n   8002800 <UART_SetConfig+0x2b8>
- 80027da:      f5b3 5f80       cmp.w   r3, #4096       ; 0x1000
- 80027de:      d802            bhi.n   80027e6 <UART_SetConfig+0x29e>
- 80027e0:      2b00            cmp     r3, #0
- 80027e2:      d007            beq.n   80027f4 <UART_SetConfig+0x2ac>
- 80027e4:      e012            b.n     800280c <UART_SetConfig+0x2c4>
- 80027e6:      f5b3 5f00       cmp.w   r3, #8192       ; 0x2000
- 80027ea:      d006            beq.n   80027fa <UART_SetConfig+0x2b2>
- 80027ec:      f5b3 5f40       cmp.w   r3, #12288      ; 0x3000
- 80027f0:      d009            beq.n   8002806 <UART_SetConfig+0x2be>
- 80027f2:      e00b            b.n     800280c <UART_SetConfig+0x2c4>
- 80027f4:      2300            movs    r3, #0
- 80027f6:      77fb            strb    r3, [r7, #31]
- 80027f8:      e04d            b.n     8002896 <UART_SetConfig+0x34e>
- 80027fa:      2302            movs    r3, #2
- 80027fc:      77fb            strb    r3, [r7, #31]
- 80027fe:      e04a            b.n     8002896 <UART_SetConfig+0x34e>
- 8002800:      2304            movs    r3, #4
- 8002802:      77fb            strb    r3, [r7, #31]
- 8002804:      e047            b.n     8002896 <UART_SetConfig+0x34e>
- 8002806:      2308            movs    r3, #8
- 8002808:      77fb            strb    r3, [r7, #31]
- 800280a:      e044            b.n     8002896 <UART_SetConfig+0x34e>
- 800280c:      2310            movs    r3, #16
- 800280e:      77fb            strb    r3, [r7, #31]
- 8002810:      bf00            nop
- 8002812:      e040            b.n     8002896 <UART_SetConfig+0x34e>
- 8002814:      687b            ldr     r3, [r7, #4]
- 8002816:      681b            ldr     r3, [r3, #0]
- 8002818:      4a11            ldr     r2, [pc, #68]   ; (8002860 <UART_SetConfig+0x318>)
- 800281a:      4293            cmp     r3, r2
- 800281c:      d139            bne.n   8002892 <UART_SetConfig+0x34a>
- 800281e:      4b09            ldr     r3, [pc, #36]   ; (8002844 <UART_SetConfig+0x2fc>)
- 8002820:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
- 8002824:      f403 4340       and.w   r3, r3, #49152  ; 0xc000
- 8002828:      f5b3 4f80       cmp.w   r3, #16384      ; 0x4000
- 800282c:      d027            beq.n   800287e <UART_SetConfig+0x336>
- 800282e:      f5b3 4f80       cmp.w   r3, #16384      ; 0x4000
- 8002832:      d817            bhi.n   8002864 <UART_SetConfig+0x31c>
- 8002834:      2b00            cmp     r3, #0
- 8002836:      d01c            beq.n   8002872 <UART_SetConfig+0x32a>
- 8002838:      e027            b.n     800288a <UART_SetConfig+0x342>
- 800283a:      bf00            nop
- 800283c:      efff69f3        .word   0xefff69f3
- 8002840:      40011000        .word   0x40011000
- 8002844:      40023800        .word   0x40023800
- 8002848:      40004400        .word   0x40004400
- 800284c:      40004800        .word   0x40004800
- 8002850:      40004c00        .word   0x40004c00
- 8002854:      40005000        .word   0x40005000
- 8002858:      40011400        .word   0x40011400
- 800285c:      40007800        .word   0x40007800
- 8002860:      40007c00        .word   0x40007c00
- 8002864:      f5b3 4f00       cmp.w   r3, #32768      ; 0x8000
- 8002868:      d006            beq.n   8002878 <UART_SetConfig+0x330>
- 800286a:      f5b3 4f40       cmp.w   r3, #49152      ; 0xc000
- 800286e:      d009            beq.n   8002884 <UART_SetConfig+0x33c>
- 8002870:      e00b            b.n     800288a <UART_SetConfig+0x342>
- 8002872:      2300            movs    r3, #0
- 8002874:      77fb            strb    r3, [r7, #31]
- 8002876:      e00e            b.n     8002896 <UART_SetConfig+0x34e>
- 8002878:      2302            movs    r3, #2
- 800287a:      77fb            strb    r3, [r7, #31]
- 800287c:      e00b            b.n     8002896 <UART_SetConfig+0x34e>
- 800287e:      2304            movs    r3, #4
- 8002880:      77fb            strb    r3, [r7, #31]
- 8002882:      e008            b.n     8002896 <UART_SetConfig+0x34e>
- 8002884:      2308            movs    r3, #8
- 8002886:      77fb            strb    r3, [r7, #31]
- 8002888:      e005            b.n     8002896 <UART_SetConfig+0x34e>
- 800288a:      2310            movs    r3, #16
- 800288c:      77fb            strb    r3, [r7, #31]
- 800288e:      bf00            nop
- 8002890:      e001            b.n     8002896 <UART_SetConfig+0x34e>
- 8002892:      2310            movs    r3, #16
- 8002894:      77fb            strb    r3, [r7, #31]
+ 80028da:      687b            ldr     r3, [r7, #4]
+ 80028dc:      681b            ldr     r3, [r3, #0]
+ 80028de:      4a9f            ldr     r2, [pc, #636]  ; (8002b5c <UART_SetConfig+0x2f8>)
+ 80028e0:      4293            cmp     r3, r2
+ 80028e2:      d121            bne.n   8002928 <UART_SetConfig+0xc4>
+ 80028e4:      4b9e            ldr     r3, [pc, #632]  ; (8002b60 <UART_SetConfig+0x2fc>)
+ 80028e6:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 80028ea:      f003 0303       and.w   r3, r3, #3
+ 80028ee:      2b03            cmp     r3, #3
+ 80028f0:      d816            bhi.n   8002920 <UART_SetConfig+0xbc>
+ 80028f2:      a201            add     r2, pc, #4      ; (adr r2, 80028f8 <UART_SetConfig+0x94>)
+ 80028f4:      f852 f023       ldr.w   pc, [r2, r3, lsl #2]
+ 80028f8:      08002909        .word   0x08002909
+ 80028fc:      08002915        .word   0x08002915
+ 8002900:      0800290f        .word   0x0800290f
+ 8002904:      0800291b        .word   0x0800291b
+ 8002908:      2301            movs    r3, #1
+ 800290a:      77fb            strb    r3, [r7, #31]
+ 800290c:      e151            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 800290e:      2302            movs    r3, #2
+ 8002910:      77fb            strb    r3, [r7, #31]
+ 8002912:      e14e            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002914:      2304            movs    r3, #4
+ 8002916:      77fb            strb    r3, [r7, #31]
+ 8002918:      e14b            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 800291a:      2308            movs    r3, #8
+ 800291c:      77fb            strb    r3, [r7, #31]
+ 800291e:      e148            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002920:      2310            movs    r3, #16
+ 8002922:      77fb            strb    r3, [r7, #31]
+ 8002924:      bf00            nop
+ 8002926:      e144            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002928:      687b            ldr     r3, [r7, #4]
+ 800292a:      681b            ldr     r3, [r3, #0]
+ 800292c:      4a8d            ldr     r2, [pc, #564]  ; (8002b64 <UART_SetConfig+0x300>)
+ 800292e:      4293            cmp     r3, r2
+ 8002930:      d134            bne.n   800299c <UART_SetConfig+0x138>
+ 8002932:      4b8b            ldr     r3, [pc, #556]  ; (8002b60 <UART_SetConfig+0x2fc>)
+ 8002934:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 8002938:      f003 030c       and.w   r3, r3, #12
+ 800293c:      2b0c            cmp     r3, #12
+ 800293e:      d829            bhi.n   8002994 <UART_SetConfig+0x130>
+ 8002940:      a201            add     r2, pc, #4      ; (adr r2, 8002948 <UART_SetConfig+0xe4>)
+ 8002942:      f852 f023       ldr.w   pc, [r2, r3, lsl #2]
+ 8002946:      bf00            nop
+ 8002948:      0800297d        .word   0x0800297d
+ 800294c:      08002995        .word   0x08002995
+ 8002950:      08002995        .word   0x08002995
+ 8002954:      08002995        .word   0x08002995
+ 8002958:      08002989        .word   0x08002989
+ 800295c:      08002995        .word   0x08002995
+ 8002960:      08002995        .word   0x08002995
+ 8002964:      08002995        .word   0x08002995
+ 8002968:      08002983        .word   0x08002983
+ 800296c:      08002995        .word   0x08002995
+ 8002970:      08002995        .word   0x08002995
+ 8002974:      08002995        .word   0x08002995
+ 8002978:      0800298f        .word   0x0800298f
+ 800297c:      2300            movs    r3, #0
+ 800297e:      77fb            strb    r3, [r7, #31]
+ 8002980:      e117            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002982:      2302            movs    r3, #2
+ 8002984:      77fb            strb    r3, [r7, #31]
+ 8002986:      e114            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002988:      2304            movs    r3, #4
+ 800298a:      77fb            strb    r3, [r7, #31]
+ 800298c:      e111            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 800298e:      2308            movs    r3, #8
+ 8002990:      77fb            strb    r3, [r7, #31]
+ 8002992:      e10e            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002994:      2310            movs    r3, #16
+ 8002996:      77fb            strb    r3, [r7, #31]
+ 8002998:      bf00            nop
+ 800299a:      e10a            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 800299c:      687b            ldr     r3, [r7, #4]
+ 800299e:      681b            ldr     r3, [r3, #0]
+ 80029a0:      4a71            ldr     r2, [pc, #452]  ; (8002b68 <UART_SetConfig+0x304>)
+ 80029a2:      4293            cmp     r3, r2
+ 80029a4:      d120            bne.n   80029e8 <UART_SetConfig+0x184>
+ 80029a6:      4b6e            ldr     r3, [pc, #440]  ; (8002b60 <UART_SetConfig+0x2fc>)
+ 80029a8:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 80029ac:      f003 0330       and.w   r3, r3, #48     ; 0x30
+ 80029b0:      2b10            cmp     r3, #16
+ 80029b2:      d00f            beq.n   80029d4 <UART_SetConfig+0x170>
+ 80029b4:      2b10            cmp     r3, #16
+ 80029b6:      d802            bhi.n   80029be <UART_SetConfig+0x15a>
+ 80029b8:      2b00            cmp     r3, #0
+ 80029ba:      d005            beq.n   80029c8 <UART_SetConfig+0x164>
+ 80029bc:      e010            b.n     80029e0 <UART_SetConfig+0x17c>
+ 80029be:      2b20            cmp     r3, #32
+ 80029c0:      d005            beq.n   80029ce <UART_SetConfig+0x16a>
+ 80029c2:      2b30            cmp     r3, #48 ; 0x30
+ 80029c4:      d009            beq.n   80029da <UART_SetConfig+0x176>
+ 80029c6:      e00b            b.n     80029e0 <UART_SetConfig+0x17c>
+ 80029c8:      2300            movs    r3, #0
+ 80029ca:      77fb            strb    r3, [r7, #31]
+ 80029cc:      e0f1            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 80029ce:      2302            movs    r3, #2
+ 80029d0:      77fb            strb    r3, [r7, #31]
+ 80029d2:      e0ee            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 80029d4:      2304            movs    r3, #4
+ 80029d6:      77fb            strb    r3, [r7, #31]
+ 80029d8:      e0eb            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 80029da:      2308            movs    r3, #8
+ 80029dc:      77fb            strb    r3, [r7, #31]
+ 80029de:      e0e8            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 80029e0:      2310            movs    r3, #16
+ 80029e2:      77fb            strb    r3, [r7, #31]
+ 80029e4:      bf00            nop
+ 80029e6:      e0e4            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 80029e8:      687b            ldr     r3, [r7, #4]
+ 80029ea:      681b            ldr     r3, [r3, #0]
+ 80029ec:      4a5f            ldr     r2, [pc, #380]  ; (8002b6c <UART_SetConfig+0x308>)
+ 80029ee:      4293            cmp     r3, r2
+ 80029f0:      d120            bne.n   8002a34 <UART_SetConfig+0x1d0>
+ 80029f2:      4b5b            ldr     r3, [pc, #364]  ; (8002b60 <UART_SetConfig+0x2fc>)
+ 80029f4:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 80029f8:      f003 03c0       and.w   r3, r3, #192    ; 0xc0
+ 80029fc:      2b40            cmp     r3, #64 ; 0x40
+ 80029fe:      d00f            beq.n   8002a20 <UART_SetConfig+0x1bc>
+ 8002a00:      2b40            cmp     r3, #64 ; 0x40
+ 8002a02:      d802            bhi.n   8002a0a <UART_SetConfig+0x1a6>
+ 8002a04:      2b00            cmp     r3, #0
+ 8002a06:      d005            beq.n   8002a14 <UART_SetConfig+0x1b0>
+ 8002a08:      e010            b.n     8002a2c <UART_SetConfig+0x1c8>
+ 8002a0a:      2b80            cmp     r3, #128        ; 0x80
+ 8002a0c:      d005            beq.n   8002a1a <UART_SetConfig+0x1b6>
+ 8002a0e:      2bc0            cmp     r3, #192        ; 0xc0
+ 8002a10:      d009            beq.n   8002a26 <UART_SetConfig+0x1c2>
+ 8002a12:      e00b            b.n     8002a2c <UART_SetConfig+0x1c8>
+ 8002a14:      2300            movs    r3, #0
+ 8002a16:      77fb            strb    r3, [r7, #31]
+ 8002a18:      e0cb            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002a1a:      2302            movs    r3, #2
+ 8002a1c:      77fb            strb    r3, [r7, #31]
+ 8002a1e:      e0c8            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002a20:      2304            movs    r3, #4
+ 8002a22:      77fb            strb    r3, [r7, #31]
+ 8002a24:      e0c5            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002a26:      2308            movs    r3, #8
+ 8002a28:      77fb            strb    r3, [r7, #31]
+ 8002a2a:      e0c2            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002a2c:      2310            movs    r3, #16
+ 8002a2e:      77fb            strb    r3, [r7, #31]
+ 8002a30:      bf00            nop
+ 8002a32:      e0be            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002a34:      687b            ldr     r3, [r7, #4]
+ 8002a36:      681b            ldr     r3, [r3, #0]
+ 8002a38:      4a4d            ldr     r2, [pc, #308]  ; (8002b70 <UART_SetConfig+0x30c>)
+ 8002a3a:      4293            cmp     r3, r2
+ 8002a3c:      d124            bne.n   8002a88 <UART_SetConfig+0x224>
+ 8002a3e:      4b48            ldr     r3, [pc, #288]  ; (8002b60 <UART_SetConfig+0x2fc>)
+ 8002a40:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 8002a44:      f403 7340       and.w   r3, r3, #768    ; 0x300
+ 8002a48:      f5b3 7f80       cmp.w   r3, #256        ; 0x100
+ 8002a4c:      d012            beq.n   8002a74 <UART_SetConfig+0x210>
+ 8002a4e:      f5b3 7f80       cmp.w   r3, #256        ; 0x100
+ 8002a52:      d802            bhi.n   8002a5a <UART_SetConfig+0x1f6>
+ 8002a54:      2b00            cmp     r3, #0
+ 8002a56:      d007            beq.n   8002a68 <UART_SetConfig+0x204>
+ 8002a58:      e012            b.n     8002a80 <UART_SetConfig+0x21c>
+ 8002a5a:      f5b3 7f00       cmp.w   r3, #512        ; 0x200
+ 8002a5e:      d006            beq.n   8002a6e <UART_SetConfig+0x20a>
+ 8002a60:      f5b3 7f40       cmp.w   r3, #768        ; 0x300
+ 8002a64:      d009            beq.n   8002a7a <UART_SetConfig+0x216>
+ 8002a66:      e00b            b.n     8002a80 <UART_SetConfig+0x21c>
+ 8002a68:      2300            movs    r3, #0
+ 8002a6a:      77fb            strb    r3, [r7, #31]
+ 8002a6c:      e0a1            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002a6e:      2302            movs    r3, #2
+ 8002a70:      77fb            strb    r3, [r7, #31]
+ 8002a72:      e09e            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002a74:      2304            movs    r3, #4
+ 8002a76:      77fb            strb    r3, [r7, #31]
+ 8002a78:      e09b            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002a7a:      2308            movs    r3, #8
+ 8002a7c:      77fb            strb    r3, [r7, #31]
+ 8002a7e:      e098            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002a80:      2310            movs    r3, #16
+ 8002a82:      77fb            strb    r3, [r7, #31]
+ 8002a84:      bf00            nop
+ 8002a86:      e094            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002a88:      687b            ldr     r3, [r7, #4]
+ 8002a8a:      681b            ldr     r3, [r3, #0]
+ 8002a8c:      4a39            ldr     r2, [pc, #228]  ; (8002b74 <UART_SetConfig+0x310>)
+ 8002a8e:      4293            cmp     r3, r2
+ 8002a90:      d124            bne.n   8002adc <UART_SetConfig+0x278>
+ 8002a92:      4b33            ldr     r3, [pc, #204]  ; (8002b60 <UART_SetConfig+0x2fc>)
+ 8002a94:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 8002a98:      f403 6340       and.w   r3, r3, #3072   ; 0xc00
+ 8002a9c:      f5b3 6f80       cmp.w   r3, #1024       ; 0x400
+ 8002aa0:      d012            beq.n   8002ac8 <UART_SetConfig+0x264>
+ 8002aa2:      f5b3 6f80       cmp.w   r3, #1024       ; 0x400
+ 8002aa6:      d802            bhi.n   8002aae <UART_SetConfig+0x24a>
+ 8002aa8:      2b00            cmp     r3, #0
+ 8002aaa:      d007            beq.n   8002abc <UART_SetConfig+0x258>
+ 8002aac:      e012            b.n     8002ad4 <UART_SetConfig+0x270>
+ 8002aae:      f5b3 6f00       cmp.w   r3, #2048       ; 0x800
+ 8002ab2:      d006            beq.n   8002ac2 <UART_SetConfig+0x25e>
+ 8002ab4:      f5b3 6f40       cmp.w   r3, #3072       ; 0xc00
+ 8002ab8:      d009            beq.n   8002ace <UART_SetConfig+0x26a>
+ 8002aba:      e00b            b.n     8002ad4 <UART_SetConfig+0x270>
+ 8002abc:      2301            movs    r3, #1
+ 8002abe:      77fb            strb    r3, [r7, #31]
+ 8002ac0:      e077            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002ac2:      2302            movs    r3, #2
+ 8002ac4:      77fb            strb    r3, [r7, #31]
+ 8002ac6:      e074            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002ac8:      2304            movs    r3, #4
+ 8002aca:      77fb            strb    r3, [r7, #31]
+ 8002acc:      e071            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002ace:      2308            movs    r3, #8
+ 8002ad0:      77fb            strb    r3, [r7, #31]
+ 8002ad2:      e06e            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002ad4:      2310            movs    r3, #16
+ 8002ad6:      77fb            strb    r3, [r7, #31]
+ 8002ad8:      bf00            nop
+ 8002ada:      e06a            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002adc:      687b            ldr     r3, [r7, #4]
+ 8002ade:      681b            ldr     r3, [r3, #0]
+ 8002ae0:      4a25            ldr     r2, [pc, #148]  ; (8002b78 <UART_SetConfig+0x314>)
+ 8002ae2:      4293            cmp     r3, r2
+ 8002ae4:      d124            bne.n   8002b30 <UART_SetConfig+0x2cc>
+ 8002ae6:      4b1e            ldr     r3, [pc, #120]  ; (8002b60 <UART_SetConfig+0x2fc>)
+ 8002ae8:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 8002aec:      f403 5340       and.w   r3, r3, #12288  ; 0x3000
+ 8002af0:      f5b3 5f80       cmp.w   r3, #4096       ; 0x1000
+ 8002af4:      d012            beq.n   8002b1c <UART_SetConfig+0x2b8>
+ 8002af6:      f5b3 5f80       cmp.w   r3, #4096       ; 0x1000
+ 8002afa:      d802            bhi.n   8002b02 <UART_SetConfig+0x29e>
+ 8002afc:      2b00            cmp     r3, #0
+ 8002afe:      d007            beq.n   8002b10 <UART_SetConfig+0x2ac>
+ 8002b00:      e012            b.n     8002b28 <UART_SetConfig+0x2c4>
+ 8002b02:      f5b3 5f00       cmp.w   r3, #8192       ; 0x2000
+ 8002b06:      d006            beq.n   8002b16 <UART_SetConfig+0x2b2>
+ 8002b08:      f5b3 5f40       cmp.w   r3, #12288      ; 0x3000
+ 8002b0c:      d009            beq.n   8002b22 <UART_SetConfig+0x2be>
+ 8002b0e:      e00b            b.n     8002b28 <UART_SetConfig+0x2c4>
+ 8002b10:      2300            movs    r3, #0
+ 8002b12:      77fb            strb    r3, [r7, #31]
+ 8002b14:      e04d            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002b16:      2302            movs    r3, #2
+ 8002b18:      77fb            strb    r3, [r7, #31]
+ 8002b1a:      e04a            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002b1c:      2304            movs    r3, #4
+ 8002b1e:      77fb            strb    r3, [r7, #31]
+ 8002b20:      e047            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002b22:      2308            movs    r3, #8
+ 8002b24:      77fb            strb    r3, [r7, #31]
+ 8002b26:      e044            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002b28:      2310            movs    r3, #16
+ 8002b2a:      77fb            strb    r3, [r7, #31]
+ 8002b2c:      bf00            nop
+ 8002b2e:      e040            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002b30:      687b            ldr     r3, [r7, #4]
+ 8002b32:      681b            ldr     r3, [r3, #0]
+ 8002b34:      4a11            ldr     r2, [pc, #68]   ; (8002b7c <UART_SetConfig+0x318>)
+ 8002b36:      4293            cmp     r3, r2
+ 8002b38:      d139            bne.n   8002bae <UART_SetConfig+0x34a>
+ 8002b3a:      4b09            ldr     r3, [pc, #36]   ; (8002b60 <UART_SetConfig+0x2fc>)
+ 8002b3c:      f8d3 3090       ldr.w   r3, [r3, #144]  ; 0x90
+ 8002b40:      f403 4340       and.w   r3, r3, #49152  ; 0xc000
+ 8002b44:      f5b3 4f80       cmp.w   r3, #16384      ; 0x4000
+ 8002b48:      d027            beq.n   8002b9a <UART_SetConfig+0x336>
+ 8002b4a:      f5b3 4f80       cmp.w   r3, #16384      ; 0x4000
+ 8002b4e:      d817            bhi.n   8002b80 <UART_SetConfig+0x31c>
+ 8002b50:      2b00            cmp     r3, #0
+ 8002b52:      d01c            beq.n   8002b8e <UART_SetConfig+0x32a>
+ 8002b54:      e027            b.n     8002ba6 <UART_SetConfig+0x342>
+ 8002b56:      bf00            nop
+ 8002b58:      efff69f3        .word   0xefff69f3
+ 8002b5c:      40011000        .word   0x40011000
+ 8002b60:      40023800        .word   0x40023800
+ 8002b64:      40004400        .word   0x40004400
+ 8002b68:      40004800        .word   0x40004800
+ 8002b6c:      40004c00        .word   0x40004c00
+ 8002b70:      40005000        .word   0x40005000
+ 8002b74:      40011400        .word   0x40011400
+ 8002b78:      40007800        .word   0x40007800
+ 8002b7c:      40007c00        .word   0x40007c00
+ 8002b80:      f5b3 4f00       cmp.w   r3, #32768      ; 0x8000
+ 8002b84:      d006            beq.n   8002b94 <UART_SetConfig+0x330>
+ 8002b86:      f5b3 4f40       cmp.w   r3, #49152      ; 0xc000
+ 8002b8a:      d009            beq.n   8002ba0 <UART_SetConfig+0x33c>
+ 8002b8c:      e00b            b.n     8002ba6 <UART_SetConfig+0x342>
+ 8002b8e:      2300            movs    r3, #0
+ 8002b90:      77fb            strb    r3, [r7, #31]
+ 8002b92:      e00e            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002b94:      2302            movs    r3, #2
+ 8002b96:      77fb            strb    r3, [r7, #31]
+ 8002b98:      e00b            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002b9a:      2304            movs    r3, #4
+ 8002b9c:      77fb            strb    r3, [r7, #31]
+ 8002b9e:      e008            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002ba0:      2308            movs    r3, #8
+ 8002ba2:      77fb            strb    r3, [r7, #31]
+ 8002ba4:      e005            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002ba6:      2310            movs    r3, #16
+ 8002ba8:      77fb            strb    r3, [r7, #31]
+ 8002baa:      bf00            nop
+ 8002bac:      e001            b.n     8002bb2 <UART_SetConfig+0x34e>
+ 8002bae:      2310            movs    r3, #16
+ 8002bb0:      77fb            strb    r3, [r7, #31]
 
   if (huart->Init.OverSampling == UART_OVERSAMPLING_8)
- 8002896:      687b            ldr     r3, [r7, #4]
- 8002898:      69db            ldr     r3, [r3, #28]
- 800289a:      f5b3 4f00       cmp.w   r3, #32768      ; 0x8000
- 800289e:      d17c            bne.n   800299a <UART_SetConfig+0x452>
+ 8002bb2:      687b            ldr     r3, [r7, #4]
+ 8002bb4:      69db            ldr     r3, [r3, #28]
+ 8002bb6:      f5b3 4f00       cmp.w   r3, #32768      ; 0x8000
+ 8002bba:      d17c            bne.n   8002cb6 <UART_SetConfig+0x452>
   {
     switch (clocksource)
- 80028a0:      7ffb            ldrb    r3, [r7, #31]
- 80028a2:      2b08            cmp     r3, #8
- 80028a4:      d859            bhi.n   800295a <UART_SetConfig+0x412>
- 80028a6:      a201            add     r2, pc, #4      ; (adr r2, 80028ac <UART_SetConfig+0x364>)
- 80028a8:      f852 f023       ldr.w   pc, [r2, r3, lsl #2]
- 80028ac:      080028d1        .word   0x080028d1
- 80028b0:      080028ef        .word   0x080028ef
- 80028b4:      0800290d        .word   0x0800290d
- 80028b8:      0800295b        .word   0x0800295b
- 80028bc:      08002925        .word   0x08002925
- 80028c0:      0800295b        .word   0x0800295b
- 80028c4:      0800295b        .word   0x0800295b
- 80028c8:      0800295b        .word   0x0800295b
- 80028cc:      08002943        .word   0x08002943
+ 8002bbc:      7ffb            ldrb    r3, [r7, #31]
+ 8002bbe:      2b08            cmp     r3, #8
+ 8002bc0:      d859            bhi.n   8002c76 <UART_SetConfig+0x412>
+ 8002bc2:      a201            add     r2, pc, #4      ; (adr r2, 8002bc8 <UART_SetConfig+0x364>)
+ 8002bc4:      f852 f023       ldr.w   pc, [r2, r3, lsl #2]
+ 8002bc8:      08002bed        .word   0x08002bed
+ 8002bcc:      08002c0b        .word   0x08002c0b
+ 8002bd0:      08002c29        .word   0x08002c29
+ 8002bd4:      08002c77        .word   0x08002c77
+ 8002bd8:      08002c41        .word   0x08002c41
+ 8002bdc:      08002c77        .word   0x08002c77
+ 8002be0:      08002c77        .word   0x08002c77
+ 8002be4:      08002c77        .word   0x08002c77
+ 8002be8:      08002c5f        .word   0x08002c5f
     {
       case UART_CLOCKSOURCE_PCLK1:
         usartdiv = (uint16_t)(UART_DIV_SAMPLING8(HAL_RCC_GetPCLK1Freq(), huart->Init.BaudRate));
- 80028d0:      f7ff f86e       bl      80019b0 <HAL_RCC_GetPCLK1Freq>
- 80028d4:      4603            mov     r3, r0
- 80028d6:      005a            lsls    r2, r3, #1
- 80028d8:      687b            ldr     r3, [r7, #4]
- 80028da:      685b            ldr     r3, [r3, #4]
- 80028dc:      085b            lsrs    r3, r3, #1
- 80028de:      441a            add     r2, r3
- 80028e0:      687b            ldr     r3, [r7, #4]
- 80028e2:      685b            ldr     r3, [r3, #4]
- 80028e4:      fbb2 f3f3       udiv    r3, r2, r3
- 80028e8:      b29b            uxth    r3, r3
- 80028ea:      61bb            str     r3, [r7, #24]
+ 8002bec:      f7fe fee0       bl      80019b0 <HAL_RCC_GetPCLK1Freq>
+ 8002bf0:      4603            mov     r3, r0
+ 8002bf2:      005a            lsls    r2, r3, #1
+ 8002bf4:      687b            ldr     r3, [r7, #4]
+ 8002bf6:      685b            ldr     r3, [r3, #4]
+ 8002bf8:      085b            lsrs    r3, r3, #1
+ 8002bfa:      441a            add     r2, r3
+ 8002bfc:      687b            ldr     r3, [r7, #4]
+ 8002bfe:      685b            ldr     r3, [r3, #4]
+ 8002c00:      fbb2 f3f3       udiv    r3, r2, r3
+ 8002c04:      b29b            uxth    r3, r3
+ 8002c06:      61bb            str     r3, [r7, #24]
         break;
- 80028ec:      e038            b.n     8002960 <UART_SetConfig+0x418>
+ 8002c08:      e038            b.n     8002c7c <UART_SetConfig+0x418>
       case UART_CLOCKSOURCE_PCLK2:
         usartdiv = (uint16_t)(UART_DIV_SAMPLING8(HAL_RCC_GetPCLK2Freq(), huart->Init.BaudRate));
- 80028ee:      f7ff f873       bl      80019d8 <HAL_RCC_GetPCLK2Freq>
- 80028f2:      4603            mov     r3, r0
- 80028f4:      005a            lsls    r2, r3, #1
- 80028f6:      687b            ldr     r3, [r7, #4]
- 80028f8:      685b            ldr     r3, [r3, #4]
- 80028fa:      085b            lsrs    r3, r3, #1
- 80028fc:      441a            add     r2, r3
- 80028fe:      687b            ldr     r3, [r7, #4]
- 8002900:      685b            ldr     r3, [r3, #4]
- 8002902:      fbb2 f3f3       udiv    r3, r2, r3
- 8002906:      b29b            uxth    r3, r3
- 8002908:      61bb            str     r3, [r7, #24]
+ 8002c0a:      f7fe fee5       bl      80019d8 <HAL_RCC_GetPCLK2Freq>
+ 8002c0e:      4603            mov     r3, r0
+ 8002c10:      005a            lsls    r2, r3, #1
+ 8002c12:      687b            ldr     r3, [r7, #4]
+ 8002c14:      685b            ldr     r3, [r3, #4]
+ 8002c16:      085b            lsrs    r3, r3, #1
+ 8002c18:      441a            add     r2, r3
+ 8002c1a:      687b            ldr     r3, [r7, #4]
+ 8002c1c:      685b            ldr     r3, [r3, #4]
+ 8002c1e:      fbb2 f3f3       udiv    r3, r2, r3
+ 8002c22:      b29b            uxth    r3, r3
+ 8002c24:      61bb            str     r3, [r7, #24]
         break;
- 800290a:      e029            b.n     8002960 <UART_SetConfig+0x418>
+ 8002c26:      e029            b.n     8002c7c <UART_SetConfig+0x418>
       case UART_CLOCKSOURCE_HSI:
         usartdiv = (uint16_t)(UART_DIV_SAMPLING8(HSI_VALUE, huart->Init.BaudRate));
- 800290c:      687b            ldr     r3, [r7, #4]
- 800290e:      685b            ldr     r3, [r3, #4]
- 8002910:      085a            lsrs    r2, r3, #1
- 8002912:      4b5d            ldr     r3, [pc, #372]  ; (8002a88 <UART_SetConfig+0x540>)
- 8002914:      4413            add     r3, r2
- 8002916:      687a            ldr     r2, [r7, #4]
- 8002918:      6852            ldr     r2, [r2, #4]
- 800291a:      fbb3 f3f2       udiv    r3, r3, r2
- 800291e:      b29b            uxth    r3, r3
- 8002920:      61bb            str     r3, [r7, #24]
+ 8002c28:      687b            ldr     r3, [r7, #4]
+ 8002c2a:      685b            ldr     r3, [r3, #4]
+ 8002c2c:      085a            lsrs    r2, r3, #1
+ 8002c2e:      4b5d            ldr     r3, [pc, #372]  ; (8002da4 <UART_SetConfig+0x540>)
+ 8002c30:      4413            add     r3, r2
+ 8002c32:      687a            ldr     r2, [r7, #4]
+ 8002c34:      6852            ldr     r2, [r2, #4]
+ 8002c36:      fbb3 f3f2       udiv    r3, r3, r2
+ 8002c3a:      b29b            uxth    r3, r3
+ 8002c3c:      61bb            str     r3, [r7, #24]
         break;
- 8002922:      e01d            b.n     8002960 <UART_SetConfig+0x418>
+ 8002c3e:      e01d            b.n     8002c7c <UART_SetConfig+0x418>
       case UART_CLOCKSOURCE_SYSCLK:
         usartdiv = (uint16_t)(UART_DIV_SAMPLING8(HAL_RCC_GetSysClockFreq(), huart->Init.BaudRate));
- 8002924:      f7fe ff86       bl      8001834 <HAL_RCC_GetSysClockFreq>
- 8002928:      4603            mov     r3, r0
- 800292a:      005a            lsls    r2, r3, #1
- 800292c:      687b            ldr     r3, [r7, #4]
- 800292e:      685b            ldr     r3, [r3, #4]
- 8002930:      085b            lsrs    r3, r3, #1
- 8002932:      441a            add     r2, r3
- 8002934:      687b            ldr     r3, [r7, #4]
- 8002936:      685b            ldr     r3, [r3, #4]
- 8002938:      fbb2 f3f3       udiv    r3, r2, r3
- 800293c:      b29b            uxth    r3, r3
- 800293e:      61bb            str     r3, [r7, #24]
+ 8002c40:      f7fe fdf8       bl      8001834 <HAL_RCC_GetSysClockFreq>
+ 8002c44:      4603            mov     r3, r0
+ 8002c46:      005a            lsls    r2, r3, #1
+ 8002c48:      687b            ldr     r3, [r7, #4]
+ 8002c4a:      685b            ldr     r3, [r3, #4]
+ 8002c4c:      085b            lsrs    r3, r3, #1
+ 8002c4e:      441a            add     r2, r3
+ 8002c50:      687b            ldr     r3, [r7, #4]
+ 8002c52:      685b            ldr     r3, [r3, #4]
+ 8002c54:      fbb2 f3f3       udiv    r3, r2, r3
+ 8002c58:      b29b            uxth    r3, r3
+ 8002c5a:      61bb            str     r3, [r7, #24]
         break;
- 8002940:      e00e            b.n     8002960 <UART_SetConfig+0x418>
+ 8002c5c:      e00e            b.n     8002c7c <UART_SetConfig+0x418>
       case UART_CLOCKSOURCE_LSE:
         usartdiv = (uint16_t)(UART_DIV_SAMPLING8(LSE_VALUE, huart->Init.BaudRate));
- 8002942:      687b            ldr     r3, [r7, #4]
- 8002944:      685b            ldr     r3, [r3, #4]
- 8002946:      085b            lsrs    r3, r3, #1
- 8002948:      f503 3280       add.w   r2, r3, #65536  ; 0x10000
- 800294c:      687b            ldr     r3, [r7, #4]
- 800294e:      685b            ldr     r3, [r3, #4]
- 8002950:      fbb2 f3f3       udiv    r3, r2, r3
- 8002954:      b29b            uxth    r3, r3
- 8002956:      61bb            str     r3, [r7, #24]
+ 8002c5e:      687b            ldr     r3, [r7, #4]
+ 8002c60:      685b            ldr     r3, [r3, #4]
+ 8002c62:      085b            lsrs    r3, r3, #1
+ 8002c64:      f503 3280       add.w   r2, r3, #65536  ; 0x10000
+ 8002c68:      687b            ldr     r3, [r7, #4]
+ 8002c6a:      685b            ldr     r3, [r3, #4]
+ 8002c6c:      fbb2 f3f3       udiv    r3, r2, r3
+ 8002c70:      b29b            uxth    r3, r3
+ 8002c72:      61bb            str     r3, [r7, #24]
         break;
- 8002958:      e002            b.n     8002960 <UART_SetConfig+0x418>
+ 8002c74:      e002            b.n     8002c7c <UART_SetConfig+0x418>
       case UART_CLOCKSOURCE_UNDEFINED:
       default:
         ret = HAL_ERROR;
- 800295a:      2301            movs    r3, #1
- 800295c:      75fb            strb    r3, [r7, #23]
+ 8002c76:      2301            movs    r3, #1
+ 8002c78:      75fb            strb    r3, [r7, #23]
         break;
- 800295e:      bf00            nop
+ 8002c7a:      bf00            nop
     }
 
     /* USARTDIV must be greater than or equal to 0d16 */
     if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX))
- 8002960:      69bb            ldr     r3, [r7, #24]
- 8002962:      2b0f            cmp     r3, #15
- 8002964:      d916            bls.n   8002994 <UART_SetConfig+0x44c>
- 8002966:      69bb            ldr     r3, [r7, #24]
- 8002968:      f5b3 3f80       cmp.w   r3, #65536      ; 0x10000
- 800296c:      d212            bcs.n   8002994 <UART_SetConfig+0x44c>
+ 8002c7c:      69bb            ldr     r3, [r7, #24]
+ 8002c7e:      2b0f            cmp     r3, #15
+ 8002c80:      d916            bls.n   8002cb0 <UART_SetConfig+0x44c>
+ 8002c82:      69bb            ldr     r3, [r7, #24]
+ 8002c84:      f5b3 3f80       cmp.w   r3, #65536      ; 0x10000
+ 8002c88:      d212            bcs.n   8002cb0 <UART_SetConfig+0x44c>
     {
       brrtemp = (uint16_t)(usartdiv & 0xFFF0U);
- 800296e:      69bb            ldr     r3, [r7, #24]
- 8002970:      b29b            uxth    r3, r3
- 8002972:      f023 030f       bic.w   r3, r3, #15
- 8002976:      81fb            strh    r3, [r7, #14]
+ 8002c8a:      69bb            ldr     r3, [r7, #24]
+ 8002c8c:      b29b            uxth    r3, r3
+ 8002c8e:      f023 030f       bic.w   r3, r3, #15
+ 8002c92:      81fb            strh    r3, [r7, #14]
       brrtemp |= (uint16_t)((usartdiv & (uint16_t)0x000FU) >> 1U);
- 8002978:      69bb            ldr     r3, [r7, #24]
- 800297a:      085b            lsrs    r3, r3, #1
- 800297c:      b29b            uxth    r3, r3
- 800297e:      f003 0307       and.w   r3, r3, #7
- 8002982:      b29a            uxth    r2, r3
- 8002984:      89fb            ldrh    r3, [r7, #14]
- 8002986:      4313            orrs    r3, r2
- 8002988:      81fb            strh    r3, [r7, #14]
+ 8002c94:      69bb            ldr     r3, [r7, #24]
+ 8002c96:      085b            lsrs    r3, r3, #1
+ 8002c98:      b29b            uxth    r3, r3
+ 8002c9a:      f003 0307       and.w   r3, r3, #7
+ 8002c9e:      b29a            uxth    r2, r3
+ 8002ca0:      89fb            ldrh    r3, [r7, #14]
+ 8002ca2:      4313            orrs    r3, r2
+ 8002ca4:      81fb            strh    r3, [r7, #14]
       huart->Instance->BRR = brrtemp;
- 800298a:      687b            ldr     r3, [r7, #4]
- 800298c:      681b            ldr     r3, [r3, #0]
- 800298e:      89fa            ldrh    r2, [r7, #14]
- 8002990:      60da            str     r2, [r3, #12]
- 8002992:      e06e            b.n     8002a72 <UART_SetConfig+0x52a>
+ 8002ca6:      687b            ldr     r3, [r7, #4]
+ 8002ca8:      681b            ldr     r3, [r3, #0]
+ 8002caa:      89fa            ldrh    r2, [r7, #14]
+ 8002cac:      60da            str     r2, [r3, #12]
+ 8002cae:      e06e            b.n     8002d8e <UART_SetConfig+0x52a>
     }
     else
     {
       ret = HAL_ERROR;
- 8002994:      2301            movs    r3, #1
- 8002996:      75fb            strb    r3, [r7, #23]
- 8002998:      e06b            b.n     8002a72 <UART_SetConfig+0x52a>
+ 8002cb0:      2301            movs    r3, #1
+ 8002cb2:      75fb            strb    r3, [r7, #23]
+ 8002cb4:      e06b            b.n     8002d8e <UART_SetConfig+0x52a>
     }
   }
   else
   {
     switch (clocksource)
- 800299a:      7ffb            ldrb    r3, [r7, #31]
- 800299c:      2b08            cmp     r3, #8
- 800299e:      d857            bhi.n   8002a50 <UART_SetConfig+0x508>
- 80029a0:      a201            add     r2, pc, #4      ; (adr r2, 80029a8 <UART_SetConfig+0x460>)
- 80029a2:      f852 f023       ldr.w   pc, [r2, r3, lsl #2]
- 80029a6:      bf00            nop
- 80029a8:      080029cd        .word   0x080029cd
- 80029ac:      080029e9        .word   0x080029e9
- 80029b0:      08002a05        .word   0x08002a05
- 80029b4:      08002a51        .word   0x08002a51
- 80029b8:      08002a1d        .word   0x08002a1d
- 80029bc:      08002a51        .word   0x08002a51
- 80029c0:      08002a51        .word   0x08002a51
- 80029c4:      08002a51        .word   0x08002a51
- 80029c8:      08002a39        .word   0x08002a39
+ 8002cb6:      7ffb            ldrb    r3, [r7, #31]
+ 8002cb8:      2b08            cmp     r3, #8
+ 8002cba:      d857            bhi.n   8002d6c <UART_SetConfig+0x508>
+ 8002cbc:      a201            add     r2, pc, #4      ; (adr r2, 8002cc4 <UART_SetConfig+0x460>)
+ 8002cbe:      f852 f023       ldr.w   pc, [r2, r3, lsl #2]
+ 8002cc2:      bf00            nop
+ 8002cc4:      08002ce9        .word   0x08002ce9
+ 8002cc8:      08002d05        .word   0x08002d05
+ 8002ccc:      08002d21        .word   0x08002d21
+ 8002cd0:      08002d6d        .word   0x08002d6d
+ 8002cd4:      08002d39        .word   0x08002d39
+ 8002cd8:      08002d6d        .word   0x08002d6d
+ 8002cdc:      08002d6d        .word   0x08002d6d
+ 8002ce0:      08002d6d        .word   0x08002d6d
+ 8002ce4:      08002d55        .word   0x08002d55
     {
       case UART_CLOCKSOURCE_PCLK1:
         usartdiv = (uint16_t)(UART_DIV_SAMPLING16(HAL_RCC_GetPCLK1Freq(), huart->Init.BaudRate));
- 80029cc:      f7fe fff0       bl      80019b0 <HAL_RCC_GetPCLK1Freq>
- 80029d0:      4602            mov     r2, r0
- 80029d2:      687b            ldr     r3, [r7, #4]
- 80029d4:      685b            ldr     r3, [r3, #4]
- 80029d6:      085b            lsrs    r3, r3, #1
- 80029d8:      441a            add     r2, r3
- 80029da:      687b            ldr     r3, [r7, #4]
- 80029dc:      685b            ldr     r3, [r3, #4]
- 80029de:      fbb2 f3f3       udiv    r3, r2, r3
- 80029e2:      b29b            uxth    r3, r3
- 80029e4:      61bb            str     r3, [r7, #24]
+ 8002ce8:      f7fe fe62       bl      80019b0 <HAL_RCC_GetPCLK1Freq>
+ 8002cec:      4602            mov     r2, r0
+ 8002cee:      687b            ldr     r3, [r7, #4]
+ 8002cf0:      685b            ldr     r3, [r3, #4]
+ 8002cf2:      085b            lsrs    r3, r3, #1
+ 8002cf4:      441a            add     r2, r3
+ 8002cf6:      687b            ldr     r3, [r7, #4]
+ 8002cf8:      685b            ldr     r3, [r3, #4]
+ 8002cfa:      fbb2 f3f3       udiv    r3, r2, r3
+ 8002cfe:      b29b            uxth    r3, r3
+ 8002d00:      61bb            str     r3, [r7, #24]
         break;
- 80029e6:      e036            b.n     8002a56 <UART_SetConfig+0x50e>
+ 8002d02:      e036            b.n     8002d72 <UART_SetConfig+0x50e>
       case UART_CLOCKSOURCE_PCLK2:
         usartdiv = (uint16_t)(UART_DIV_SAMPLING16(HAL_RCC_GetPCLK2Freq(), huart->Init.BaudRate));
- 80029e8:      f7fe fff6       bl      80019d8 <HAL_RCC_GetPCLK2Freq>
- 80029ec:      4602            mov     r2, r0
- 80029ee:      687b            ldr     r3, [r7, #4]
- 80029f0:      685b            ldr     r3, [r3, #4]
- 80029f2:      085b            lsrs    r3, r3, #1
- 80029f4:      441a            add     r2, r3
- 80029f6:      687b            ldr     r3, [r7, #4]
- 80029f8:      685b            ldr     r3, [r3, #4]
- 80029fa:      fbb2 f3f3       udiv    r3, r2, r3
- 80029fe:      b29b            uxth    r3, r3
- 8002a00:      61bb            str     r3, [r7, #24]
+ 8002d04:      f7fe fe68       bl      80019d8 <HAL_RCC_GetPCLK2Freq>
+ 8002d08:      4602            mov     r2, r0
+ 8002d0a:      687b            ldr     r3, [r7, #4]
+ 8002d0c:      685b            ldr     r3, [r3, #4]
+ 8002d0e:      085b            lsrs    r3, r3, #1
+ 8002d10:      441a            add     r2, r3
+ 8002d12:      687b            ldr     r3, [r7, #4]
+ 8002d14:      685b            ldr     r3, [r3, #4]
+ 8002d16:      fbb2 f3f3       udiv    r3, r2, r3
+ 8002d1a:      b29b            uxth    r3, r3
+ 8002d1c:      61bb            str     r3, [r7, #24]
         break;
- 8002a02:      e028            b.n     8002a56 <UART_SetConfig+0x50e>
+ 8002d1e:      e028            b.n     8002d72 <UART_SetConfig+0x50e>
       case UART_CLOCKSOURCE_HSI:
         usartdiv = (uint16_t)(UART_DIV_SAMPLING16(HSI_VALUE, huart->Init.BaudRate));
- 8002a04:      687b            ldr     r3, [r7, #4]
- 8002a06:      685b            ldr     r3, [r3, #4]
- 8002a08:      085a            lsrs    r2, r3, #1
- 8002a0a:      4b20            ldr     r3, [pc, #128]  ; (8002a8c <UART_SetConfig+0x544>)
- 8002a0c:      4413            add     r3, r2
- 8002a0e:      687a            ldr     r2, [r7, #4]
- 8002a10:      6852            ldr     r2, [r2, #4]
- 8002a12:      fbb3 f3f2       udiv    r3, r3, r2
- 8002a16:      b29b            uxth    r3, r3
- 8002a18:      61bb            str     r3, [r7, #24]
+ 8002d20:      687b            ldr     r3, [r7, #4]
+ 8002d22:      685b            ldr     r3, [r3, #4]
+ 8002d24:      085a            lsrs    r2, r3, #1
+ 8002d26:      4b20            ldr     r3, [pc, #128]  ; (8002da8 <UART_SetConfig+0x544>)
+ 8002d28:      4413            add     r3, r2
+ 8002d2a:      687a            ldr     r2, [r7, #4]
+ 8002d2c:      6852            ldr     r2, [r2, #4]
+ 8002d2e:      fbb3 f3f2       udiv    r3, r3, r2
+ 8002d32:      b29b            uxth    r3, r3
+ 8002d34:      61bb            str     r3, [r7, #24]
         break;
- 8002a1a:      e01c            b.n     8002a56 <UART_SetConfig+0x50e>
+ 8002d36:      e01c            b.n     8002d72 <UART_SetConfig+0x50e>
       case UART_CLOCKSOURCE_SYSCLK:
         usartdiv = (uint16_t)(UART_DIV_SAMPLING16(HAL_RCC_GetSysClockFreq(), huart->Init.BaudRate));
- 8002a1c:      f7fe ff0a       bl      8001834 <HAL_RCC_GetSysClockFreq>
- 8002a20:      4602            mov     r2, r0
- 8002a22:      687b            ldr     r3, [r7, #4]
- 8002a24:      685b            ldr     r3, [r3, #4]
- 8002a26:      085b            lsrs    r3, r3, #1
- 8002a28:      441a            add     r2, r3
- 8002a2a:      687b            ldr     r3, [r7, #4]
- 8002a2c:      685b            ldr     r3, [r3, #4]
- 8002a2e:      fbb2 f3f3       udiv    r3, r2, r3
- 8002a32:      b29b            uxth    r3, r3
- 8002a34:      61bb            str     r3, [r7, #24]
+ 8002d38:      f7fe fd7c       bl      8001834 <HAL_RCC_GetSysClockFreq>
+ 8002d3c:      4602            mov     r2, r0
+ 8002d3e:      687b            ldr     r3, [r7, #4]
+ 8002d40:      685b            ldr     r3, [r3, #4]
+ 8002d42:      085b            lsrs    r3, r3, #1
+ 8002d44:      441a            add     r2, r3
+ 8002d46:      687b            ldr     r3, [r7, #4]
+ 8002d48:      685b            ldr     r3, [r3, #4]
+ 8002d4a:      fbb2 f3f3       udiv    r3, r2, r3
+ 8002d4e:      b29b            uxth    r3, r3
+ 8002d50:      61bb            str     r3, [r7, #24]
         break;
- 8002a36:      e00e            b.n     8002a56 <UART_SetConfig+0x50e>
+ 8002d52:      e00e            b.n     8002d72 <UART_SetConfig+0x50e>
       case UART_CLOCKSOURCE_LSE:
         usartdiv = (uint16_t)(UART_DIV_SAMPLING16(LSE_VALUE, huart->Init.BaudRate));
- 8002a38:      687b            ldr     r3, [r7, #4]
- 8002a3a:      685b            ldr     r3, [r3, #4]
- 8002a3c:      085b            lsrs    r3, r3, #1
- 8002a3e:      f503 4200       add.w   r2, r3, #32768  ; 0x8000
- 8002a42:      687b            ldr     r3, [r7, #4]
- 8002a44:      685b            ldr     r3, [r3, #4]
- 8002a46:      fbb2 f3f3       udiv    r3, r2, r3
- 8002a4a:      b29b            uxth    r3, r3
- 8002a4c:      61bb            str     r3, [r7, #24]
+ 8002d54:      687b            ldr     r3, [r7, #4]
+ 8002d56:      685b            ldr     r3, [r3, #4]
+ 8002d58:      085b            lsrs    r3, r3, #1
+ 8002d5a:      f503 4200       add.w   r2, r3, #32768  ; 0x8000
+ 8002d5e:      687b            ldr     r3, [r7, #4]
+ 8002d60:      685b            ldr     r3, [r3, #4]
+ 8002d62:      fbb2 f3f3       udiv    r3, r2, r3
+ 8002d66:      b29b            uxth    r3, r3
+ 8002d68:      61bb            str     r3, [r7, #24]
         break;
- 8002a4e:      e002            b.n     8002a56 <UART_SetConfig+0x50e>
+ 8002d6a:      e002            b.n     8002d72 <UART_SetConfig+0x50e>
       case UART_CLOCKSOURCE_UNDEFINED:
       default:
         ret = HAL_ERROR;
- 8002a50:      2301            movs    r3, #1
- 8002a52:      75fb            strb    r3, [r7, #23]
+ 8002d6c:      2301            movs    r3, #1
+ 8002d6e:      75fb            strb    r3, [r7, #23]
         break;
- 8002a54:      bf00            nop
+ 8002d70:      bf00            nop
     }
 
     /* USARTDIV must be greater than or equal to 0d16 */
     if ((usartdiv >= UART_BRR_MIN) && (usartdiv <= UART_BRR_MAX))
- 8002a56:      69bb            ldr     r3, [r7, #24]
- 8002a58:      2b0f            cmp     r3, #15
- 8002a5a:      d908            bls.n   8002a6e <UART_SetConfig+0x526>
- 8002a5c:      69bb            ldr     r3, [r7, #24]
- 8002a5e:      f5b3 3f80       cmp.w   r3, #65536      ; 0x10000
- 8002a62:      d204            bcs.n   8002a6e <UART_SetConfig+0x526>
+ 8002d72:      69bb            ldr     r3, [r7, #24]
+ 8002d74:      2b0f            cmp     r3, #15
+ 8002d76:      d908            bls.n   8002d8a <UART_SetConfig+0x526>
+ 8002d78:      69bb            ldr     r3, [r7, #24]
+ 8002d7a:      f5b3 3f80       cmp.w   r3, #65536      ; 0x10000
+ 8002d7e:      d204            bcs.n   8002d8a <UART_SetConfig+0x526>
     {
       huart->Instance->BRR = usartdiv;
- 8002a64:      687b            ldr     r3, [r7, #4]
- 8002a66:      681b            ldr     r3, [r3, #0]
- 8002a68:      69ba            ldr     r2, [r7, #24]
- 8002a6a:      60da            str     r2, [r3, #12]
- 8002a6c:      e001            b.n     8002a72 <UART_SetConfig+0x52a>
+ 8002d80:      687b            ldr     r3, [r7, #4]
+ 8002d82:      681b            ldr     r3, [r3, #0]
+ 8002d84:      69ba            ldr     r2, [r7, #24]
+ 8002d86:      60da            str     r2, [r3, #12]
+ 8002d88:      e001            b.n     8002d8e <UART_SetConfig+0x52a>
     }
     else
     {
       ret = HAL_ERROR;
- 8002a6e:      2301            movs    r3, #1
- 8002a70:      75fb            strb    r3, [r7, #23]
+ 8002d8a:      2301            movs    r3, #1
+ 8002d8c:      75fb            strb    r3, [r7, #23]
     }
   }
 
 
   /* Clear ISR function pointers */
   huart->RxISR = NULL;
- 8002a72:      687b            ldr     r3, [r7, #4]
- 8002a74:      2200            movs    r2, #0
- 8002a76:      661a            str     r2, [r3, #96]   ; 0x60
+ 8002d8e:      687b            ldr     r3, [r7, #4]
+ 8002d90:      2200            movs    r2, #0
+ 8002d92:      661a            str     r2, [r3, #96]   ; 0x60
   huart->TxISR = NULL;
- 8002a78:      687b            ldr     r3, [r7, #4]
- 8002a7a:      2200            movs    r2, #0
- 8002a7c:      665a            str     r2, [r3, #100]  ; 0x64
+ 8002d94:      687b            ldr     r3, [r7, #4]
+ 8002d96:      2200            movs    r2, #0
+ 8002d98:      665a            str     r2, [r3, #100]  ; 0x64
 
   return ret;
- 8002a7e:      7dfb            ldrb    r3, [r7, #23]
+ 8002d9a:      7dfb            ldrb    r3, [r7, #23]
 }
- 8002a80:      4618            mov     r0, r3
- 8002a82:      3720            adds    r7, #32
- 8002a84:      46bd            mov     sp, r7
- 8002a86:      bd80            pop     {r7, pc}
- 8002a88:      01e84800        .word   0x01e84800
- 8002a8c:      00f42400        .word   0x00f42400
-
-08002a90 <UART_AdvFeatureConfig>:
+ 8002d9c:      4618            mov     r0, r3
+ 8002d9e:      3720            adds    r7, #32
+ 8002da0:      46bd            mov     sp, r7
+ 8002da2:      bd80            pop     {r7, pc}
+ 8002da4:      01e84800        .word   0x01e84800
+ 8002da8:      00f42400        .word   0x00f42400
+
+08002dac <UART_AdvFeatureConfig>:
   * @brief Configure the UART peripheral advanced features.
   * @param huart UART handle.
   * @retval None
   */
 void UART_AdvFeatureConfig(UART_HandleTypeDef *huart)
 {
- 8002a90:      b480            push    {r7}
- 8002a92:      b083            sub     sp, #12
- 8002a94:      af00            add     r7, sp, #0
- 8002a96:      6078            str     r0, [r7, #4]
+ 8002dac:      b480            push    {r7}
+ 8002dae:      b083            sub     sp, #12
+ 8002db0:      af00            add     r7, sp, #0
+ 8002db2:      6078            str     r0, [r7, #4]
   /* Check whether the set of advanced features to configure is properly set */
   assert_param(IS_UART_ADVFEATURE_INIT(huart->AdvancedInit.AdvFeatureInit));
 
   /* if required, configure TX pin active level inversion */
   if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_TXINVERT_INIT))
- 8002a98:      687b            ldr     r3, [r7, #4]
- 8002a9a:      6a5b            ldr     r3, [r3, #36]   ; 0x24
- 8002a9c:      f003 0301       and.w   r3, r3, #1
- 8002aa0:      2b00            cmp     r3, #0
- 8002aa2:      d00a            beq.n   8002aba <UART_AdvFeatureConfig+0x2a>
+ 8002db4:      687b            ldr     r3, [r7, #4]
+ 8002db6:      6a5b            ldr     r3, [r3, #36]   ; 0x24
+ 8002db8:      f003 0301       and.w   r3, r3, #1
+ 8002dbc:      2b00            cmp     r3, #0
+ 8002dbe:      d00a            beq.n   8002dd6 <UART_AdvFeatureConfig+0x2a>
   {
     assert_param(IS_UART_ADVFEATURE_TXINV(huart->AdvancedInit.TxPinLevelInvert));
     MODIFY_REG(huart->Instance->CR2, USART_CR2_TXINV, huart->AdvancedInit.TxPinLevelInvert);
- 8002aa4:      687b            ldr     r3, [r7, #4]
- 8002aa6:      681b            ldr     r3, [r3, #0]
- 8002aa8:      685b            ldr     r3, [r3, #4]
- 8002aaa:      f423 3100       bic.w   r1, r3, #131072 ; 0x20000
- 8002aae:      687b            ldr     r3, [r7, #4]
- 8002ab0:      6a9a            ldr     r2, [r3, #40]   ; 0x28
- 8002ab2:      687b            ldr     r3, [r7, #4]
- 8002ab4:      681b            ldr     r3, [r3, #0]
- 8002ab6:      430a            orrs    r2, r1
- 8002ab8:      605a            str     r2, [r3, #4]
+ 8002dc0:      687b            ldr     r3, [r7, #4]
+ 8002dc2:      681b            ldr     r3, [r3, #0]
+ 8002dc4:      685b            ldr     r3, [r3, #4]
+ 8002dc6:      f423 3100       bic.w   r1, r3, #131072 ; 0x20000
+ 8002dca:      687b            ldr     r3, [r7, #4]
+ 8002dcc:      6a9a            ldr     r2, [r3, #40]   ; 0x28
+ 8002dce:      687b            ldr     r3, [r7, #4]
+ 8002dd0:      681b            ldr     r3, [r3, #0]
+ 8002dd2:      430a            orrs    r2, r1
+ 8002dd4:      605a            str     r2, [r3, #4]
   }
 
   /* if required, configure RX pin active level inversion */
   if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXINVERT_INIT))
- 8002aba:      687b            ldr     r3, [r7, #4]
- 8002abc:      6a5b            ldr     r3, [r3, #36]   ; 0x24
- 8002abe:      f003 0302       and.w   r3, r3, #2
- 8002ac2:      2b00            cmp     r3, #0
- 8002ac4:      d00a            beq.n   8002adc <UART_AdvFeatureConfig+0x4c>
+ 8002dd6:      687b            ldr     r3, [r7, #4]
+ 8002dd8:      6a5b            ldr     r3, [r3, #36]   ; 0x24
+ 8002dda:      f003 0302       and.w   r3, r3, #2
+ 8002dde:      2b00            cmp     r3, #0
+ 8002de0:      d00a            beq.n   8002df8 <UART_AdvFeatureConfig+0x4c>
   {
     assert_param(IS_UART_ADVFEATURE_RXINV(huart->AdvancedInit.RxPinLevelInvert));
     MODIFY_REG(huart->Instance->CR2, USART_CR2_RXINV, huart->AdvancedInit.RxPinLevelInvert);
- 8002ac6:      687b            ldr     r3, [r7, #4]
- 8002ac8:      681b            ldr     r3, [r3, #0]
- 8002aca:      685b            ldr     r3, [r3, #4]
- 8002acc:      f423 3180       bic.w   r1, r3, #65536  ; 0x10000
- 8002ad0:      687b            ldr     r3, [r7, #4]
- 8002ad2:      6ada            ldr     r2, [r3, #44]   ; 0x2c
- 8002ad4:      687b            ldr     r3, [r7, #4]
- 8002ad6:      681b            ldr     r3, [r3, #0]
- 8002ad8:      430a            orrs    r2, r1
- 8002ada:      605a            str     r2, [r3, #4]
+ 8002de2:      687b            ldr     r3, [r7, #4]
+ 8002de4:      681b            ldr     r3, [r3, #0]
+ 8002de6:      685b            ldr     r3, [r3, #4]
+ 8002de8:      f423 3180       bic.w   r1, r3, #65536  ; 0x10000
+ 8002dec:      687b            ldr     r3, [r7, #4]
+ 8002dee:      6ada            ldr     r2, [r3, #44]   ; 0x2c
+ 8002df0:      687b            ldr     r3, [r7, #4]
+ 8002df2:      681b            ldr     r3, [r3, #0]
+ 8002df4:      430a            orrs    r2, r1
+ 8002df6:      605a            str     r2, [r3, #4]
   }
 
   /* if required, configure data inversion */
   if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DATAINVERT_INIT))
- 8002adc:      687b            ldr     r3, [r7, #4]
- 8002ade:      6a5b            ldr     r3, [r3, #36]   ; 0x24
- 8002ae0:      f003 0304       and.w   r3, r3, #4
- 8002ae4:      2b00            cmp     r3, #0
- 8002ae6:      d00a            beq.n   8002afe <UART_AdvFeatureConfig+0x6e>
+ 8002df8:      687b            ldr     r3, [r7, #4]
+ 8002dfa:      6a5b            ldr     r3, [r3, #36]   ; 0x24
+ 8002dfc:      f003 0304       and.w   r3, r3, #4
+ 8002e00:      2b00            cmp     r3, #0
+ 8002e02:      d00a            beq.n   8002e1a <UART_AdvFeatureConfig+0x6e>
   {
     assert_param(IS_UART_ADVFEATURE_DATAINV(huart->AdvancedInit.DataInvert));
     MODIFY_REG(huart->Instance->CR2, USART_CR2_DATAINV, huart->AdvancedInit.DataInvert);
- 8002ae8:      687b            ldr     r3, [r7, #4]
- 8002aea:      681b            ldr     r3, [r3, #0]
- 8002aec:      685b            ldr     r3, [r3, #4]
- 8002aee:      f423 2180       bic.w   r1, r3, #262144 ; 0x40000
- 8002af2:      687b            ldr     r3, [r7, #4]
- 8002af4:      6b1a            ldr     r2, [r3, #48]   ; 0x30
- 8002af6:      687b            ldr     r3, [r7, #4]
- 8002af8:      681b            ldr     r3, [r3, #0]
- 8002afa:      430a            orrs    r2, r1
- 8002afc:      605a            str     r2, [r3, #4]
+ 8002e04:      687b            ldr     r3, [r7, #4]
+ 8002e06:      681b            ldr     r3, [r3, #0]
+ 8002e08:      685b            ldr     r3, [r3, #4]
+ 8002e0a:      f423 2180       bic.w   r1, r3, #262144 ; 0x40000
+ 8002e0e:      687b            ldr     r3, [r7, #4]
+ 8002e10:      6b1a            ldr     r2, [r3, #48]   ; 0x30
+ 8002e12:      687b            ldr     r3, [r7, #4]
+ 8002e14:      681b            ldr     r3, [r3, #0]
+ 8002e16:      430a            orrs    r2, r1
+ 8002e18:      605a            str     r2, [r3, #4]
   }
 
   /* if required, configure RX/TX pins swap */
   if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_SWAP_INIT))
- 8002afe:      687b            ldr     r3, [r7, #4]
- 8002b00:      6a5b            ldr     r3, [r3, #36]   ; 0x24
- 8002b02:      f003 0308       and.w   r3, r3, #8
- 8002b06:      2b00            cmp     r3, #0
- 8002b08:      d00a            beq.n   8002b20 <UART_AdvFeatureConfig+0x90>
+ 8002e1a:      687b            ldr     r3, [r7, #4]
+ 8002e1c:      6a5b            ldr     r3, [r3, #36]   ; 0x24
+ 8002e1e:      f003 0308       and.w   r3, r3, #8
+ 8002e22:      2b00            cmp     r3, #0
+ 8002e24:      d00a            beq.n   8002e3c <UART_AdvFeatureConfig+0x90>
   {
     assert_param(IS_UART_ADVFEATURE_SWAP(huart->AdvancedInit.Swap));
     MODIFY_REG(huart->Instance->CR2, USART_CR2_SWAP, huart->AdvancedInit.Swap);
- 8002b0a:      687b            ldr     r3, [r7, #4]
- 8002b0c:      681b            ldr     r3, [r3, #0]
- 8002b0e:      685b            ldr     r3, [r3, #4]
- 8002b10:      f423 4100       bic.w   r1, r3, #32768  ; 0x8000
- 8002b14:      687b            ldr     r3, [r7, #4]
- 8002b16:      6b5a            ldr     r2, [r3, #52]   ; 0x34
- 8002b18:      687b            ldr     r3, [r7, #4]
- 8002b1a:      681b            ldr     r3, [r3, #0]
- 8002b1c:      430a            orrs    r2, r1
- 8002b1e:      605a            str     r2, [r3, #4]
+ 8002e26:      687b            ldr     r3, [r7, #4]
+ 8002e28:      681b            ldr     r3, [r3, #0]
+ 8002e2a:      685b            ldr     r3, [r3, #4]
+ 8002e2c:      f423 4100       bic.w   r1, r3, #32768  ; 0x8000
+ 8002e30:      687b            ldr     r3, [r7, #4]
+ 8002e32:      6b5a            ldr     r2, [r3, #52]   ; 0x34
+ 8002e34:      687b            ldr     r3, [r7, #4]
+ 8002e36:      681b            ldr     r3, [r3, #0]
+ 8002e38:      430a            orrs    r2, r1
+ 8002e3a:      605a            str     r2, [r3, #4]
   }
 
   /* if required, configure RX overrun detection disabling */
   if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_RXOVERRUNDISABLE_INIT))
- 8002b20:      687b            ldr     r3, [r7, #4]
- 8002b22:      6a5b            ldr     r3, [r3, #36]   ; 0x24
- 8002b24:      f003 0310       and.w   r3, r3, #16
- 8002b28:      2b00            cmp     r3, #0
- 8002b2a:      d00a            beq.n   8002b42 <UART_AdvFeatureConfig+0xb2>
+ 8002e3c:      687b            ldr     r3, [r7, #4]
+ 8002e3e:      6a5b            ldr     r3, [r3, #36]   ; 0x24
+ 8002e40:      f003 0310       and.w   r3, r3, #16
+ 8002e44:      2b00            cmp     r3, #0
+ 8002e46:      d00a            beq.n   8002e5e <UART_AdvFeatureConfig+0xb2>
   {
     assert_param(IS_UART_OVERRUN(huart->AdvancedInit.OverrunDisable));
     MODIFY_REG(huart->Instance->CR3, USART_CR3_OVRDIS, huart->AdvancedInit.OverrunDisable);
- 8002b2c:      687b            ldr     r3, [r7, #4]
- 8002b2e:      681b            ldr     r3, [r3, #0]
- 8002b30:      689b            ldr     r3, [r3, #8]
- 8002b32:      f423 5180       bic.w   r1, r3, #4096   ; 0x1000
- 8002b36:      687b            ldr     r3, [r7, #4]
- 8002b38:      6b9a            ldr     r2, [r3, #56]   ; 0x38
- 8002b3a:      687b            ldr     r3, [r7, #4]
- 8002b3c:      681b            ldr     r3, [r3, #0]
- 8002b3e:      430a            orrs    r2, r1
- 8002b40:      609a            str     r2, [r3, #8]
+ 8002e48:      687b            ldr     r3, [r7, #4]
+ 8002e4a:      681b            ldr     r3, [r3, #0]
+ 8002e4c:      689b            ldr     r3, [r3, #8]
+ 8002e4e:      f423 5180       bic.w   r1, r3, #4096   ; 0x1000
+ 8002e52:      687b            ldr     r3, [r7, #4]
+ 8002e54:      6b9a            ldr     r2, [r3, #56]   ; 0x38
+ 8002e56:      687b            ldr     r3, [r7, #4]
+ 8002e58:      681b            ldr     r3, [r3, #0]
+ 8002e5a:      430a            orrs    r2, r1
+ 8002e5c:      609a            str     r2, [r3, #8]
   }
 
   /* if required, configure DMA disabling on reception error */
   if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_DMADISABLEONERROR_INIT))
- 8002b42:      687b            ldr     r3, [r7, #4]
- 8002b44:      6a5b            ldr     r3, [r3, #36]   ; 0x24
- 8002b46:      f003 0320       and.w   r3, r3, #32
- 8002b4a:      2b00            cmp     r3, #0
- 8002b4c:      d00a            beq.n   8002b64 <UART_AdvFeatureConfig+0xd4>
+ 8002e5e:      687b            ldr     r3, [r7, #4]
+ 8002e60:      6a5b            ldr     r3, [r3, #36]   ; 0x24
+ 8002e62:      f003 0320       and.w   r3, r3, #32
+ 8002e66:      2b00            cmp     r3, #0
+ 8002e68:      d00a            beq.n   8002e80 <UART_AdvFeatureConfig+0xd4>
   {
     assert_param(IS_UART_ADVFEATURE_DMAONRXERROR(huart->AdvancedInit.DMADisableonRxError));
     MODIFY_REG(huart->Instance->CR3, USART_CR3_DDRE, huart->AdvancedInit.DMADisableonRxError);
- 8002b4e:      687b            ldr     r3, [r7, #4]
- 8002b50:      681b            ldr     r3, [r3, #0]
- 8002b52:      689b            ldr     r3, [r3, #8]
- 8002b54:      f423 5100       bic.w   r1, r3, #8192   ; 0x2000
- 8002b58:      687b            ldr     r3, [r7, #4]
- 8002b5a:      6bda            ldr     r2, [r3, #60]   ; 0x3c
- 8002b5c:      687b            ldr     r3, [r7, #4]
- 8002b5e:      681b            ldr     r3, [r3, #0]
- 8002b60:      430a            orrs    r2, r1
- 8002b62:      609a            str     r2, [r3, #8]
+ 8002e6a:      687b            ldr     r3, [r7, #4]
+ 8002e6c:      681b            ldr     r3, [r3, #0]
+ 8002e6e:      689b            ldr     r3, [r3, #8]
+ 8002e70:      f423 5100       bic.w   r1, r3, #8192   ; 0x2000
+ 8002e74:      687b            ldr     r3, [r7, #4]
+ 8002e76:      6bda            ldr     r2, [r3, #60]   ; 0x3c
+ 8002e78:      687b            ldr     r3, [r7, #4]
+ 8002e7a:      681b            ldr     r3, [r3, #0]
+ 8002e7c:      430a            orrs    r2, r1
+ 8002e7e:      609a            str     r2, [r3, #8]
   }
 
   /* if required, configure auto Baud rate detection scheme */
   if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_AUTOBAUDRATE_INIT))
- 8002b64:      687b            ldr     r3, [r7, #4]
- 8002b66:      6a5b            ldr     r3, [r3, #36]   ; 0x24
- 8002b68:      f003 0340       and.w   r3, r3, #64     ; 0x40
- 8002b6c:      2b00            cmp     r3, #0
- 8002b6e:      d01a            beq.n   8002ba6 <UART_AdvFeatureConfig+0x116>
+ 8002e80:      687b            ldr     r3, [r7, #4]
+ 8002e82:      6a5b            ldr     r3, [r3, #36]   ; 0x24
+ 8002e84:      f003 0340       and.w   r3, r3, #64     ; 0x40
+ 8002e88:      2b00            cmp     r3, #0
+ 8002e8a:      d01a            beq.n   8002ec2 <UART_AdvFeatureConfig+0x116>
   {
     assert_param(IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(huart->Instance));
     assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATE(huart->AdvancedInit.AutoBaudRateEnable));
     MODIFY_REG(huart->Instance->CR2, USART_CR2_ABREN, huart->AdvancedInit.AutoBaudRateEnable);
- 8002b70:      687b            ldr     r3, [r7, #4]
- 8002b72:      681b            ldr     r3, [r3, #0]
- 8002b74:      685b            ldr     r3, [r3, #4]
- 8002b76:      f423 1180       bic.w   r1, r3, #1048576        ; 0x100000
- 8002b7a:      687b            ldr     r3, [r7, #4]
- 8002b7c:      6c1a            ldr     r2, [r3, #64]   ; 0x40
- 8002b7e:      687b            ldr     r3, [r7, #4]
- 8002b80:      681b            ldr     r3, [r3, #0]
- 8002b82:      430a            orrs    r2, r1
- 8002b84:      605a            str     r2, [r3, #4]
+ 8002e8c:      687b            ldr     r3, [r7, #4]
+ 8002e8e:      681b            ldr     r3, [r3, #0]
+ 8002e90:      685b            ldr     r3, [r3, #4]
+ 8002e92:      f423 1180       bic.w   r1, r3, #1048576        ; 0x100000
+ 8002e96:      687b            ldr     r3, [r7, #4]
+ 8002e98:      6c1a            ldr     r2, [r3, #64]   ; 0x40
+ 8002e9a:      687b            ldr     r3, [r7, #4]
+ 8002e9c:      681b            ldr     r3, [r3, #0]
+ 8002e9e:      430a            orrs    r2, r1
+ 8002ea0:      605a            str     r2, [r3, #4]
     /* set auto Baudrate detection parameters if detection is enabled */
     if (huart->AdvancedInit.AutoBaudRateEnable == UART_ADVFEATURE_AUTOBAUDRATE_ENABLE)
- 8002b86:      687b            ldr     r3, [r7, #4]
- 8002b88:      6c1b            ldr     r3, [r3, #64]   ; 0x40
- 8002b8a:      f5b3 1f80       cmp.w   r3, #1048576    ; 0x100000
- 8002b8e:      d10a            bne.n   8002ba6 <UART_AdvFeatureConfig+0x116>
+ 8002ea2:      687b            ldr     r3, [r7, #4]
+ 8002ea4:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 8002ea6:      f5b3 1f80       cmp.w   r3, #1048576    ; 0x100000
+ 8002eaa:      d10a            bne.n   8002ec2 <UART_AdvFeatureConfig+0x116>
     {
       assert_param(IS_UART_ADVFEATURE_AUTOBAUDRATEMODE(huart->AdvancedInit.AutoBaudRateMode));
       MODIFY_REG(huart->Instance->CR2, USART_CR2_ABRMODE, huart->AdvancedInit.AutoBaudRateMode);
- 8002b90:      687b            ldr     r3, [r7, #4]
- 8002b92:      681b            ldr     r3, [r3, #0]
- 8002b94:      685b            ldr     r3, [r3, #4]
- 8002b96:      f423 01c0       bic.w   r1, r3, #6291456        ; 0x600000
- 8002b9a:      687b            ldr     r3, [r7, #4]
- 8002b9c:      6c5a            ldr     r2, [r3, #68]   ; 0x44
- 8002b9e:      687b            ldr     r3, [r7, #4]
- 8002ba0:      681b            ldr     r3, [r3, #0]
- 8002ba2:      430a            orrs    r2, r1
- 8002ba4:      605a            str     r2, [r3, #4]
+ 8002eac:      687b            ldr     r3, [r7, #4]
+ 8002eae:      681b            ldr     r3, [r3, #0]
+ 8002eb0:      685b            ldr     r3, [r3, #4]
+ 8002eb2:      f423 01c0       bic.w   r1, r3, #6291456        ; 0x600000
+ 8002eb6:      687b            ldr     r3, [r7, #4]
+ 8002eb8:      6c5a            ldr     r2, [r3, #68]   ; 0x44
+ 8002eba:      687b            ldr     r3, [r7, #4]
+ 8002ebc:      681b            ldr     r3, [r3, #0]
+ 8002ebe:      430a            orrs    r2, r1
+ 8002ec0:      605a            str     r2, [r3, #4]
     }
   }
 
   /* if required, configure MSB first on communication line */
   if (HAL_IS_BIT_SET(huart->AdvancedInit.AdvFeatureInit, UART_ADVFEATURE_MSBFIRST_INIT))
- 8002ba6:      687b            ldr     r3, [r7, #4]
- 8002ba8:      6a5b            ldr     r3, [r3, #36]   ; 0x24
- 8002baa:      f003 0380       and.w   r3, r3, #128    ; 0x80
- 8002bae:      2b00            cmp     r3, #0
- 8002bb0:      d00a            beq.n   8002bc8 <UART_AdvFeatureConfig+0x138>
+ 8002ec2:      687b            ldr     r3, [r7, #4]
+ 8002ec4:      6a5b            ldr     r3, [r3, #36]   ; 0x24
+ 8002ec6:      f003 0380       and.w   r3, r3, #128    ; 0x80
+ 8002eca:      2b00            cmp     r3, #0
+ 8002ecc:      d00a            beq.n   8002ee4 <UART_AdvFeatureConfig+0x138>
   {
     assert_param(IS_UART_ADVFEATURE_MSBFIRST(huart->AdvancedInit.MSBFirst));
     MODIFY_REG(huart->Instance->CR2, USART_CR2_MSBFIRST, huart->AdvancedInit.MSBFirst);
- 8002bb2:      687b            ldr     r3, [r7, #4]
- 8002bb4:      681b            ldr     r3, [r3, #0]
- 8002bb6:      685b            ldr     r3, [r3, #4]
- 8002bb8:      f423 2100       bic.w   r1, r3, #524288 ; 0x80000
- 8002bbc:      687b            ldr     r3, [r7, #4]
- 8002bbe:      6c9a            ldr     r2, [r3, #72]   ; 0x48
- 8002bc0:      687b            ldr     r3, [r7, #4]
- 8002bc2:      681b            ldr     r3, [r3, #0]
- 8002bc4:      430a            orrs    r2, r1
- 8002bc6:      605a            str     r2, [r3, #4]
+ 8002ece:      687b            ldr     r3, [r7, #4]
+ 8002ed0:      681b            ldr     r3, [r3, #0]
+ 8002ed2:      685b            ldr     r3, [r3, #4]
+ 8002ed4:      f423 2100       bic.w   r1, r3, #524288 ; 0x80000
+ 8002ed8:      687b            ldr     r3, [r7, #4]
+ 8002eda:      6c9a            ldr     r2, [r3, #72]   ; 0x48
+ 8002edc:      687b            ldr     r3, [r7, #4]
+ 8002ede:      681b            ldr     r3, [r3, #0]
+ 8002ee0:      430a            orrs    r2, r1
+ 8002ee2:      605a            str     r2, [r3, #4]
   }
 }
- 8002bc8:      bf00            nop
- 8002bca:      370c            adds    r7, #12
- 8002bcc:      46bd            mov     sp, r7
- 8002bce:      f85d 7b04       ldr.w   r7, [sp], #4
- 8002bd2:      4770            bx      lr
+ 8002ee4:      bf00            nop
+ 8002ee6:      370c            adds    r7, #12
+ 8002ee8:      46bd            mov     sp, r7
+ 8002eea:      f85d 7b04       ldr.w   r7, [sp], #4
+ 8002eee:      4770            bx      lr
 
-08002bd4 <UART_CheckIdleState>:
+08002ef0 <UART_CheckIdleState>:
   * @brief Check the UART Idle State.
   * @param huart UART handle.
   * @retval HAL status
   */
 HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart)
 {
- 8002bd4:      b580            push    {r7, lr}
- 8002bd6:      b086            sub     sp, #24
- 8002bd8:      af02            add     r7, sp, #8
- 8002bda:      6078            str     r0, [r7, #4]
+ 8002ef0:      b580            push    {r7, lr}
+ 8002ef2:      b086            sub     sp, #24
+ 8002ef4:      af02            add     r7, sp, #8
+ 8002ef6:      6078            str     r0, [r7, #4]
   uint32_t tickstart;
 
   /* Initialize the UART ErrorCode */
   huart->ErrorCode = HAL_UART_ERROR_NONE;
- 8002bdc:      687b            ldr     r3, [r7, #4]
- 8002bde:      2200            movs    r2, #0
- 8002be0:      67da            str     r2, [r3, #124]  ; 0x7c
+ 8002ef8:      687b            ldr     r3, [r7, #4]
+ 8002efa:      2200            movs    r2, #0
+ 8002efc:      67da            str     r2, [r3, #124]  ; 0x7c
 
   /* Init tickstart for timeout managment*/
   tickstart = HAL_GetTick();
- 8002be2:      f7fd fcfb       bl      80005dc <HAL_GetTick>
- 8002be6:      60f8            str     r0, [r7, #12]
+ 8002efe:      f7fd fb6d       bl      80005dc <HAL_GetTick>
+ 8002f02:      60f8            str     r0, [r7, #12]
 
   /* Check if the Transmitter is enabled */
   if ((huart->Instance->CR1 & USART_CR1_TE) == USART_CR1_TE)
- 8002be8:      687b            ldr     r3, [r7, #4]
- 8002bea:      681b            ldr     r3, [r3, #0]
- 8002bec:      681b            ldr     r3, [r3, #0]
- 8002bee:      f003 0308       and.w   r3, r3, #8
- 8002bf2:      2b08            cmp     r3, #8
- 8002bf4:      d10e            bne.n   8002c14 <UART_CheckIdleState+0x40>
+ 8002f04:      687b            ldr     r3, [r7, #4]
+ 8002f06:      681b            ldr     r3, [r3, #0]
+ 8002f08:      681b            ldr     r3, [r3, #0]
+ 8002f0a:      f003 0308       and.w   r3, r3, #8
+ 8002f0e:      2b08            cmp     r3, #8
+ 8002f10:      d10e            bne.n   8002f30 <UART_CheckIdleState+0x40>
   {
     /* Wait until TEACK flag is set */
     if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_TEACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK)
- 8002bf6:      f06f 437e       mvn.w   r3, #4261412864 ; 0xfe000000
- 8002bfa:      9300            str     r3, [sp, #0]
- 8002bfc:      68fb            ldr     r3, [r7, #12]
- 8002bfe:      2200            movs    r2, #0
- 8002c00:      f44f 1100       mov.w   r1, #2097152    ; 0x200000
- 8002c04:      6878            ldr     r0, [r7, #4]
- 8002c06:      f000 f814       bl      8002c32 <UART_WaitOnFlagUntilTimeout>
- 8002c0a:      4603            mov     r3, r0
- 8002c0c:      2b00            cmp     r3, #0
- 8002c0e:      d001            beq.n   8002c14 <UART_CheckIdleState+0x40>
+ 8002f12:      f06f 437e       mvn.w   r3, #4261412864 ; 0xfe000000
+ 8002f16:      9300            str     r3, [sp, #0]
+ 8002f18:      68fb            ldr     r3, [r7, #12]
+ 8002f1a:      2200            movs    r2, #0
+ 8002f1c:      f44f 1100       mov.w   r1, #2097152    ; 0x200000
+ 8002f20:      6878            ldr     r0, [r7, #4]
+ 8002f22:      f000 f814       bl      8002f4e <UART_WaitOnFlagUntilTimeout>
+ 8002f26:      4603            mov     r3, r0
+ 8002f28:      2b00            cmp     r3, #0
+ 8002f2a:      d001            beq.n   8002f30 <UART_CheckIdleState+0x40>
     {
       /* Timeout occurred */
       return HAL_TIMEOUT;
- 8002c10:      2303            movs    r3, #3
- 8002c12:      e00a            b.n     8002c2a <UART_CheckIdleState+0x56>
+ 8002f2c:      2303            movs    r3, #3
+ 8002f2e:      e00a            b.n     8002f46 <UART_CheckIdleState+0x56>
     }
   }
 
   /* Initialize the UART State */
   huart->gState = HAL_UART_STATE_READY;
- 8002c14:      687b            ldr     r3, [r7, #4]
- 8002c16:      2220            movs    r2, #32
- 8002c18:      675a            str     r2, [r3, #116]  ; 0x74
+ 8002f30:      687b            ldr     r3, [r7, #4]
+ 8002f32:      2220            movs    r2, #32
+ 8002f34:      675a            str     r2, [r3, #116]  ; 0x74
   huart->RxState = HAL_UART_STATE_READY;
- 8002c1a:      687b            ldr     r3, [r7, #4]
- 8002c1c:      2220            movs    r2, #32
- 8002c1e:      679a            str     r2, [r3, #120]  ; 0x78
+ 8002f36:      687b            ldr     r3, [r7, #4]
+ 8002f38:      2220            movs    r2, #32
+ 8002f3a:      679a            str     r2, [r3, #120]  ; 0x78
 
   /* Process Unlocked */
   __HAL_UNLOCK(huart);
- 8002c20:      687b            ldr     r3, [r7, #4]
- 8002c22:      2200            movs    r2, #0
- 8002c24:      f883 2070       strb.w  r2, [r3, #112]  ; 0x70
+ 8002f3c:      687b            ldr     r3, [r7, #4]
+ 8002f3e:      2200            movs    r2, #0
+ 8002f40:      f883 2070       strb.w  r2, [r3, #112]  ; 0x70
 
   return HAL_OK;
- 8002c28:      2300            movs    r3, #0
+ 8002f44:      2300            movs    r3, #0
 }
- 8002c2a:      4618            mov     r0, r3
- 8002c2c:      3710            adds    r7, #16
- 8002c2e:      46bd            mov     sp, r7
- 8002c30:      bd80            pop     {r7, pc}
+ 8002f46:      4618            mov     r0, r3
+ 8002f48:      3710            adds    r7, #16
+ 8002f4a:      46bd            mov     sp, r7
+ 8002f4c:      bd80            pop     {r7, pc}
 
-08002c32 <UART_WaitOnFlagUntilTimeout>:
+08002f4e <UART_WaitOnFlagUntilTimeout>:
   * @param Tickstart Tick start value
   * @param Timeout   Timeout duration
   * @retval HAL status
   */
 HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status, uint32_t Tickstart, uint32_t Timeout)
 {
- 8002c32:      b580            push    {r7, lr}
- 8002c34:      b084            sub     sp, #16
- 8002c36:      af00            add     r7, sp, #0
- 8002c38:      60f8            str     r0, [r7, #12]
- 8002c3a:      60b9            str     r1, [r7, #8]
- 8002c3c:      603b            str     r3, [r7, #0]
- 8002c3e:      4613            mov     r3, r2
- 8002c40:      71fb            strb    r3, [r7, #7]
+ 8002f4e:      b580            push    {r7, lr}
+ 8002f50:      b084            sub     sp, #16
+ 8002f52:      af00            add     r7, sp, #0
+ 8002f54:      60f8            str     r0, [r7, #12]
+ 8002f56:      60b9            str     r1, [r7, #8]
+ 8002f58:      603b            str     r3, [r7, #0]
+ 8002f5a:      4613            mov     r3, r2
+ 8002f5c:      71fb            strb    r3, [r7, #7]
   /* Wait until flag is set */
   while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
- 8002c42:      e02a            b.n     8002c9a <UART_WaitOnFlagUntilTimeout+0x68>
+ 8002f5e:      e02a            b.n     8002fb6 <UART_WaitOnFlagUntilTimeout+0x68>
   {
     /* Check for the Timeout */
     if (Timeout != HAL_MAX_DELAY)
- 8002c44:      69bb            ldr     r3, [r7, #24]
- 8002c46:      f1b3 3fff       cmp.w   r3, #4294967295 ; 0xffffffff
- 8002c4a:      d026            beq.n   8002c9a <UART_WaitOnFlagUntilTimeout+0x68>
+ 8002f60:      69bb            ldr     r3, [r7, #24]
+ 8002f62:      f1b3 3fff       cmp.w   r3, #4294967295 ; 0xffffffff
+ 8002f66:      d026            beq.n   8002fb6 <UART_WaitOnFlagUntilTimeout+0x68>
     {
       if (((HAL_GetTick() - Tickstart) > Timeout) || (Timeout == 0U))
- 8002c4c:      f7fd fcc6       bl      80005dc <HAL_GetTick>
- 8002c50:      4602            mov     r2, r0
- 8002c52:      683b            ldr     r3, [r7, #0]
- 8002c54:      1ad3            subs    r3, r2, r3
- 8002c56:      69ba            ldr     r2, [r7, #24]
- 8002c58:      429a            cmp     r2, r3
- 8002c5a:      d302            bcc.n   8002c62 <UART_WaitOnFlagUntilTimeout+0x30>
- 8002c5c:      69bb            ldr     r3, [r7, #24]
- 8002c5e:      2b00            cmp     r3, #0
- 8002c60:      d11b            bne.n   8002c9a <UART_WaitOnFlagUntilTimeout+0x68>
+ 8002f68:      f7fd fb38       bl      80005dc <HAL_GetTick>
+ 8002f6c:      4602            mov     r2, r0
+ 8002f6e:      683b            ldr     r3, [r7, #0]
+ 8002f70:      1ad3            subs    r3, r2, r3
+ 8002f72:      69ba            ldr     r2, [r7, #24]
+ 8002f74:      429a            cmp     r2, r3
+ 8002f76:      d302            bcc.n   8002f7e <UART_WaitOnFlagUntilTimeout+0x30>
+ 8002f78:      69bb            ldr     r3, [r7, #24]
+ 8002f7a:      2b00            cmp     r3, #0
+ 8002f7c:      d11b            bne.n   8002fb6 <UART_WaitOnFlagUntilTimeout+0x68>
       {
         /* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts for the interrupt process */
         CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE));
- 8002c62:      68fb            ldr     r3, [r7, #12]
- 8002c64:      681b            ldr     r3, [r3, #0]
- 8002c66:      681a            ldr     r2, [r3, #0]
- 8002c68:      68fb            ldr     r3, [r7, #12]
- 8002c6a:      681b            ldr     r3, [r3, #0]
- 8002c6c:      f422 72d0       bic.w   r2, r2, #416    ; 0x1a0
- 8002c70:      601a            str     r2, [r3, #0]
+ 8002f7e:      68fb            ldr     r3, [r7, #12]
+ 8002f80:      681b            ldr     r3, [r3, #0]
+ 8002f82:      681a            ldr     r2, [r3, #0]
+ 8002f84:      68fb            ldr     r3, [r7, #12]
+ 8002f86:      681b            ldr     r3, [r3, #0]
+ 8002f88:      f422 72d0       bic.w   r2, r2, #416    ; 0x1a0
+ 8002f8c:      601a            str     r2, [r3, #0]
         CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
- 8002c72:      68fb            ldr     r3, [r7, #12]
- 8002c74:      681b            ldr     r3, [r3, #0]
- 8002c76:      689a            ldr     r2, [r3, #8]
- 8002c78:      68fb            ldr     r3, [r7, #12]
- 8002c7a:      681b            ldr     r3, [r3, #0]
- 8002c7c:      f022 0201       bic.w   r2, r2, #1
- 8002c80:      609a            str     r2, [r3, #8]
+ 8002f8e:      68fb            ldr     r3, [r7, #12]
+ 8002f90:      681b            ldr     r3, [r3, #0]
+ 8002f92:      689a            ldr     r2, [r3, #8]
+ 8002f94:      68fb            ldr     r3, [r7, #12]
+ 8002f96:      681b            ldr     r3, [r3, #0]
+ 8002f98:      f022 0201       bic.w   r2, r2, #1
+ 8002f9c:      609a            str     r2, [r3, #8]
 
         huart->gState = HAL_UART_STATE_READY;
- 8002c82:      68fb            ldr     r3, [r7, #12]
- 8002c84:      2220            movs    r2, #32
- 8002c86:      675a            str     r2, [r3, #116]  ; 0x74
+ 8002f9e:      68fb            ldr     r3, [r7, #12]
+ 8002fa0:      2220            movs    r2, #32
+ 8002fa2:      675a            str     r2, [r3, #116]  ; 0x74
         huart->RxState = HAL_UART_STATE_READY;
- 8002c88:      68fb            ldr     r3, [r7, #12]
- 8002c8a:      2220            movs    r2, #32
- 8002c8c:      679a            str     r2, [r3, #120]  ; 0x78
+ 8002fa4:      68fb            ldr     r3, [r7, #12]
+ 8002fa6:      2220            movs    r2, #32
+ 8002fa8:      679a            str     r2, [r3, #120]  ; 0x78
 
         /* Process Unlocked */
         __HAL_UNLOCK(huart);
- 8002c8e:      68fb            ldr     r3, [r7, #12]
- 8002c90:      2200            movs    r2, #0
- 8002c92:      f883 2070       strb.w  r2, [r3, #112]  ; 0x70
+ 8002faa:      68fb            ldr     r3, [r7, #12]
+ 8002fac:      2200            movs    r2, #0
+ 8002fae:      f883 2070       strb.w  r2, [r3, #112]  ; 0x70
 
         return HAL_TIMEOUT;
- 8002c96:      2303            movs    r3, #3
- 8002c98:      e00f            b.n     8002cba <UART_WaitOnFlagUntilTimeout+0x88>
+ 8002fb2:      2303            movs    r3, #3
+ 8002fb4:      e00f            b.n     8002fd6 <UART_WaitOnFlagUntilTimeout+0x88>
   while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
- 8002c9a:      68fb            ldr     r3, [r7, #12]
- 8002c9c:      681b            ldr     r3, [r3, #0]
- 8002c9e:      69da            ldr     r2, [r3, #28]
- 8002ca0:      68bb            ldr     r3, [r7, #8]
- 8002ca2:      4013            ands    r3, r2
- 8002ca4:      68ba            ldr     r2, [r7, #8]
- 8002ca6:      429a            cmp     r2, r3
- 8002ca8:      bf0c            ite     eq
- 8002caa:      2301            moveq   r3, #1
- 8002cac:      2300            movne   r3, #0
- 8002cae:      b2db            uxtb    r3, r3
- 8002cb0:      461a            mov     r2, r3
- 8002cb2:      79fb            ldrb    r3, [r7, #7]
- 8002cb4:      429a            cmp     r2, r3
- 8002cb6:      d0c5            beq.n   8002c44 <UART_WaitOnFlagUntilTimeout+0x12>
+ 8002fb6:      68fb            ldr     r3, [r7, #12]
+ 8002fb8:      681b            ldr     r3, [r3, #0]
+ 8002fba:      69da            ldr     r2, [r3, #28]
+ 8002fbc:      68bb            ldr     r3, [r7, #8]
+ 8002fbe:      4013            ands    r3, r2
+ 8002fc0:      68ba            ldr     r2, [r7, #8]
+ 8002fc2:      429a            cmp     r2, r3
+ 8002fc4:      bf0c            ite     eq
+ 8002fc6:      2301            moveq   r3, #1
+ 8002fc8:      2300            movne   r3, #0
+ 8002fca:      b2db            uxtb    r3, r3
+ 8002fcc:      461a            mov     r2, r3
+ 8002fce:      79fb            ldrb    r3, [r7, #7]
+ 8002fd0:      429a            cmp     r2, r3
+ 8002fd2:      d0c5            beq.n   8002f60 <UART_WaitOnFlagUntilTimeout+0x12>
       }
     }
   }
   return HAL_OK;
- 8002cb8:      2300            movs    r3, #0
+ 8002fd4:      2300            movs    r3, #0
 }
- 8002cba:      4618            mov     r0, r3
- 8002cbc:      3710            adds    r7, #16
- 8002cbe:      46bd            mov     sp, r7
- 8002cc0:      bd80            pop     {r7, pc}
+ 8002fd6:      4618            mov     r0, r3
+ 8002fd8:      3710            adds    r7, #16
+ 8002fda:      46bd            mov     sp, r7
+ 8002fdc:      bd80            pop     {r7, pc}
 
-08002cc2 <UART_EndRxTransfer>:
+08002fde <UART_EndRxTransfer>:
   * @brief  End ongoing Rx transfer on UART peripheral (following error detection or Reception completion).
   * @param  huart UART handle.
   * @retval None
   */
 static void UART_EndRxTransfer(UART_HandleTypeDef *huart)
 {
- 8002cc2:      b480            push    {r7}
- 8002cc4:      b083            sub     sp, #12
- 8002cc6:      af00            add     r7, sp, #0
- 8002cc8:      6078            str     r0, [r7, #4]
+ 8002fde:      b480            push    {r7}
+ 8002fe0:      b083            sub     sp, #12
+ 8002fe2:      af00            add     r7, sp, #0
+ 8002fe4:      6078            str     r0, [r7, #4]
   /* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */
   CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE));
- 8002cca:      687b            ldr     r3, [r7, #4]
- 8002ccc:      681b            ldr     r3, [r3, #0]
- 8002cce:      681a            ldr     r2, [r3, #0]
- 8002cd0:      687b            ldr     r3, [r7, #4]
- 8002cd2:      681b            ldr     r3, [r3, #0]
- 8002cd4:      f422 7290       bic.w   r2, r2, #288    ; 0x120
- 8002cd8:      601a            str     r2, [r3, #0]
+ 8002fe6:      687b            ldr     r3, [r7, #4]
+ 8002fe8:      681b            ldr     r3, [r3, #0]
+ 8002fea:      681a            ldr     r2, [r3, #0]
+ 8002fec:      687b            ldr     r3, [r7, #4]
+ 8002fee:      681b            ldr     r3, [r3, #0]
+ 8002ff0:      f422 7290       bic.w   r2, r2, #288    ; 0x120
+ 8002ff4:      601a            str     r2, [r3, #0]
   CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
- 8002cda:      687b            ldr     r3, [r7, #4]
- 8002cdc:      681b            ldr     r3, [r3, #0]
- 8002cde:      689a            ldr     r2, [r3, #8]
- 8002ce0:      687b            ldr     r3, [r7, #4]
- 8002ce2:      681b            ldr     r3, [r3, #0]
- 8002ce4:      f022 0201       bic.w   r2, r2, #1
- 8002ce8:      609a            str     r2, [r3, #8]
+ 8002ff6:      687b            ldr     r3, [r7, #4]
+ 8002ff8:      681b            ldr     r3, [r3, #0]
+ 8002ffa:      689a            ldr     r2, [r3, #8]
+ 8002ffc:      687b            ldr     r3, [r7, #4]
+ 8002ffe:      681b            ldr     r3, [r3, #0]
+ 8003000:      f022 0201       bic.w   r2, r2, #1
+ 8003004:      609a            str     r2, [r3, #8]
 
   /* At end of Rx process, restore huart->RxState to Ready */
   huart->RxState = HAL_UART_STATE_READY;
- 8002cea:      687b            ldr     r3, [r7, #4]
- 8002cec:      2220            movs    r2, #32
- 8002cee:      679a            str     r2, [r3, #120]  ; 0x78
+ 8003006:      687b            ldr     r3, [r7, #4]
+ 8003008:      2220            movs    r2, #32
+ 800300a:      679a            str     r2, [r3, #120]  ; 0x78
 
   /* Reset RxIsr function pointer */
   huart->RxISR = NULL;
- 8002cf0:      687b            ldr     r3, [r7, #4]
- 8002cf2:      2200            movs    r2, #0
- 8002cf4:      661a            str     r2, [r3, #96]   ; 0x60
+ 800300c:      687b            ldr     r3, [r7, #4]
+ 800300e:      2200            movs    r2, #0
+ 8003010:      661a            str     r2, [r3, #96]   ; 0x60
 }
- 8002cf6:      bf00            nop
- 8002cf8:      370c            adds    r7, #12
- 8002cfa:      46bd            mov     sp, r7
- 8002cfc:      f85d 7b04       ldr.w   r7, [sp], #4
- 8002d00:      4770            bx      lr
+ 8003012:      bf00            nop
+ 8003014:      370c            adds    r7, #12
+ 8003016:      46bd            mov     sp, r7
+ 8003018:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800301c:      4770            bx      lr
 
-08002d02 <UART_DMAAbortOnError>:
+0800301e <UART_DMAAbortOnError>:
   *         (To be called at end of DMA Abort procedure following error occurrence).
   * @param  hdma DMA handle.
   * @retval None
   */
 static void UART_DMAAbortOnError(DMA_HandleTypeDef *hdma)
 {
- 8002d02:      b580            push    {r7, lr}
- 8002d04:      b084            sub     sp, #16
- 8002d06:      af00            add     r7, sp, #0
- 8002d08:      6078            str     r0, [r7, #4]
+ 800301e:      b580            push    {r7, lr}
+ 8003020:      b084            sub     sp, #16
+ 8003022:      af00            add     r7, sp, #0
+ 8003024:      6078            str     r0, [r7, #4]
   UART_HandleTypeDef *huart = (UART_HandleTypeDef *)(hdma->Parent);
- 8002d0a:      687b            ldr     r3, [r7, #4]
- 8002d0c:      6b9b            ldr     r3, [r3, #56]   ; 0x38
- 8002d0e:      60fb            str     r3, [r7, #12]
+ 8003026:      687b            ldr     r3, [r7, #4]
+ 8003028:      6b9b            ldr     r3, [r3, #56]   ; 0x38
+ 800302a:      60fb            str     r3, [r7, #12]
   huart->RxXferCount = 0U;
- 8002d10:      68fb            ldr     r3, [r7, #12]
- 8002d12:      2200            movs    r2, #0
- 8002d14:      f8a3 205a       strh.w  r2, [r3, #90]   ; 0x5a
+ 800302c:      68fb            ldr     r3, [r7, #12]
+ 800302e:      2200            movs    r2, #0
+ 8003030:      f8a3 205a       strh.w  r2, [r3, #90]   ; 0x5a
   huart->TxXferCount = 0U;
- 8002d18:      68fb            ldr     r3, [r7, #12]
- 8002d1a:      2200            movs    r2, #0
- 8002d1c:      f8a3 2052       strh.w  r2, [r3, #82]   ; 0x52
+ 8003034:      68fb            ldr     r3, [r7, #12]
+ 8003036:      2200            movs    r2, #0
+ 8003038:      f8a3 2052       strh.w  r2, [r3, #82]   ; 0x52
 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
   /*Call registered error callback*/
   huart->ErrorCallback(huart);
 #else
   /*Call legacy weak error callback*/
   HAL_UART_ErrorCallback(huart);
- 8002d20:      68f8            ldr     r0, [r7, #12]
- 8002d22:      f7ff fc07       bl      8002534 <HAL_UART_ErrorCallback>
+ 800303c:      68f8            ldr     r0, [r7, #12]
+ 800303e:      f7ff fc07       bl      8002850 <HAL_UART_ErrorCallback>
 #endif /* USE_HAL_UART_REGISTER_CALLBACKS */
 }
- 8002d26:      bf00            nop
- 8002d28:      3710            adds    r7, #16
- 8002d2a:      46bd            mov     sp, r7
- 8002d2c:      bd80            pop     {r7, pc}
+ 8003042:      bf00            nop
+ 8003044:      3710            adds    r7, #16
+ 8003046:      46bd            mov     sp, r7
+ 8003048:      bd80            pop     {r7, pc}
 
-08002d2e <UART_EndTransmit_IT>:
+0800304a <UART_EndTransmit_IT>:
   * @param  huart pointer to a UART_HandleTypeDef structure that contains
   *                the configuration information for the specified UART module.
   * @retval None
   */
 static void UART_EndTransmit_IT(UART_HandleTypeDef *huart)
 {
- 8002d2e:      b580            push    {r7, lr}
- 8002d30:      b082            sub     sp, #8
- 8002d32:      af00            add     r7, sp, #0
- 8002d34:      6078            str     r0, [r7, #4]
+ 800304a:      b580            push    {r7, lr}
+ 800304c:      b082            sub     sp, #8
+ 800304e:      af00            add     r7, sp, #0
+ 8003050:      6078            str     r0, [r7, #4]
   /* Disable the UART Transmit Complete Interrupt */
   CLEAR_BIT(huart->Instance->CR1, USART_CR1_TCIE);
- 8002d36:      687b            ldr     r3, [r7, #4]
- 8002d38:      681b            ldr     r3, [r3, #0]
- 8002d3a:      681a            ldr     r2, [r3, #0]
- 8002d3c:      687b            ldr     r3, [r7, #4]
- 8002d3e:      681b            ldr     r3, [r3, #0]
- 8002d40:      f022 0240       bic.w   r2, r2, #64     ; 0x40
- 8002d44:      601a            str     r2, [r3, #0]
+ 8003052:      687b            ldr     r3, [r7, #4]
+ 8003054:      681b            ldr     r3, [r3, #0]
+ 8003056:      681a            ldr     r2, [r3, #0]
+ 8003058:      687b            ldr     r3, [r7, #4]
+ 800305a:      681b            ldr     r3, [r3, #0]
+ 800305c:      f022 0240       bic.w   r2, r2, #64     ; 0x40
+ 8003060:      601a            str     r2, [r3, #0]
 
   /* Tx process is ended, restore huart->gState to Ready */
   huart->gState = HAL_UART_STATE_READY;
- 8002d46:      687b            ldr     r3, [r7, #4]
- 8002d48:      2220            movs    r2, #32
- 8002d4a:      675a            str     r2, [r3, #116]  ; 0x74
+ 8003062:      687b            ldr     r3, [r7, #4]
+ 8003064:      2220            movs    r2, #32
+ 8003066:      675a            str     r2, [r3, #116]  ; 0x74
 
   /* Cleat TxISR function pointer */
   huart->TxISR = NULL;
- 8002d4c:      687b            ldr     r3, [r7, #4]
- 8002d4e:      2200            movs    r2, #0
- 8002d50:      665a            str     r2, [r3, #100]  ; 0x64
+ 8003068:      687b            ldr     r3, [r7, #4]
+ 800306a:      2200            movs    r2, #0
+ 800306c:      665a            str     r2, [r3, #100]  ; 0x64
 #if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
   /*Call registered Tx complete callback*/
   huart->TxCpltCallback(huart);
 #else
   /*Call legacy weak Tx complete callback*/
   HAL_UART_TxCpltCallback(huart);
- 8002d52:      6878            ldr     r0, [r7, #4]
- 8002d54:      f7ff fbe4       bl      8002520 <HAL_UART_TxCpltCallback>
+ 800306e:      6878            ldr     r0, [r7, #4]
+ 8003070:      f7ff fbe4       bl      800283c <HAL_UART_TxCpltCallback>
 #endif /* USE_HAL_UART_REGISTER_CALLBACKS */
 }
- 8002d58:      bf00            nop
- 8002d5a:      3708            adds    r7, #8
- 8002d5c:      46bd            mov     sp, r7
- 8002d5e:      bd80            pop     {r7, pc}
+ 8003074:      bf00            nop
+ 8003076:      3708            adds    r7, #8
+ 8003078:      46bd            mov     sp, r7
+ 800307a:      bd80            pop     {r7, pc}
 
-08002d60 <main>:
+0800307c <main>:
 /**
   * @brief  The application entry point.
   * @retval int
   */
 int main(void)
 {
- 8002d60:      b580            push    {r7, lr}
- 8002d62:      af00            add     r7, sp, #0
+ 800307c:      b580            push    {r7, lr}
+ 800307e:      af00            add     r7, sp, #0
   
 
   /* MCU Configuration--------------------------------------------------------*/
 
   /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
   HAL_Init();
- 8002d64:      f7fd fbe8       bl      8000538 <HAL_Init>
+ 8003080:      f7fd fa5a       bl      8000538 <HAL_Init>
   /* USER CODE BEGIN Init */
 
   /* USER CODE END Init */
 
   /* Configure the system clock */
   SystemClock_Config();
- 8002d68:      f000 f808       bl      8002d7c <_Z18SystemClock_Configv>
+ 8003084:      f000 f80a       bl      800309c <_Z18SystemClock_Configv>
   /* USER CODE BEGIN SysInit */
 
   /* USER CODE END SysInit */
 
   /* Initialize all configured peripherals */
   MX_GPIO_Init();
- 8002d6c:      f000 f8ea       bl      8002f44 <_ZL12MX_GPIO_Initv>
+ 8003088:      f000 f94a       bl      8003320 <_ZL12MX_GPIO_Initv>
   MX_DMA_Init();
- 8002d70:      f000 f8c2       bl      8002ef8 <_ZL11MX_DMA_Initv>
+ 800308c:      f000 f922       bl      80032d4 <_ZL11MX_DMA_Initv>
+  MX_TIM2_Init();
+ 8003090:      f000 f88e       bl      80031b0 <_ZL12MX_TIM2_Initv>
   MX_USART3_UART_Init();
- 8002d74:      f000 f88c       bl      8002e90 <_ZL19MX_USART3_UART_Initv>
+ 8003094:      f000 f8ea       bl      800326c <_ZL19MX_USART3_UART_Initv>
 
   /* USER CODE END 2 */
 
   /* Infinite loop */
   /* USER CODE BEGIN WHILE */
-  while (1)
- 8002d78:      e7fe            b.n     8002d78 <main+0x18>
+  while (1) {
+ 8003098:      e7fe            b.n     8003098 <main+0x1c>
        ...
 
-08002d7c <_Z18SystemClock_Configv>:
+0800309c <_Z18SystemClock_Configv>:
 /**
   * @brief System Clock Configuration
   * @retval None
   */
 void SystemClock_Config(void)
 {
- 8002d7c:      b580            push    {r7, lr}
- 8002d7e:      b0b8            sub     sp, #224        ; 0xe0
- 8002d80:      af00            add     r7, sp, #0
+ 800309c:      b580            push    {r7, lr}
+ 800309e:      b0b8            sub     sp, #224        ; 0xe0
+ 80030a0:      af00            add     r7, sp, #0
   RCC_OscInitTypeDef RCC_OscInitStruct = {0};
- 8002d82:      f107 03ac       add.w   r3, r7, #172    ; 0xac
- 8002d86:      2234            movs    r2, #52 ; 0x34
- 8002d88:      2100            movs    r1, #0
- 8002d8a:      4618            mov     r0, r3
- 8002d8c:      f000 faa2       bl      80032d4 <memset>
+ 80030a2:      f107 03ac       add.w   r3, r7, #172    ; 0xac
+ 80030a6:      2234            movs    r2, #52 ; 0x34
+ 80030a8:      2100            movs    r1, #0
+ 80030aa:      4618            mov     r0, r3
+ 80030ac:      f000 fb4e       bl      800374c <memset>
   RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
- 8002d90:      f107 0398       add.w   r3, r7, #152    ; 0x98
- 8002d94:      2200            movs    r2, #0
- 8002d96:      601a            str     r2, [r3, #0]
- 8002d98:      605a            str     r2, [r3, #4]
- 8002d9a:      609a            str     r2, [r3, #8]
- 8002d9c:      60da            str     r2, [r3, #12]
- 8002d9e:      611a            str     r2, [r3, #16]
+ 80030b0:      f107 0398       add.w   r3, r7, #152    ; 0x98
+ 80030b4:      2200            movs    r2, #0
+ 80030b6:      601a            str     r2, [r3, #0]
+ 80030b8:      605a            str     r2, [r3, #4]
+ 80030ba:      609a            str     r2, [r3, #8]
+ 80030bc:      60da            str     r2, [r3, #12]
+ 80030be:      611a            str     r2, [r3, #16]
   RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
- 8002da0:      f107 0308       add.w   r3, r7, #8
- 8002da4:      2290            movs    r2, #144        ; 0x90
- 8002da6:      2100            movs    r1, #0
- 8002da8:      4618            mov     r0, r3
- 8002daa:      f000 fa93       bl      80032d4 <memset>
+ 80030c0:      f107 0308       add.w   r3, r7, #8
+ 80030c4:      2290            movs    r2, #144        ; 0x90
+ 80030c6:      2100            movs    r1, #0
+ 80030c8:      4618            mov     r0, r3
+ 80030ca:      f000 fb3f       bl      800374c <memset>
 
   /** Configure the main internal regulator output voltage 
   */
   __HAL_RCC_PWR_CLK_ENABLE();
- 8002dae:      4b36            ldr     r3, [pc, #216]  ; (8002e88 <_Z18SystemClock_Configv+0x10c>)
- 8002db0:      6c1b            ldr     r3, [r3, #64]   ; 0x40
- 8002db2:      4a35            ldr     r2, [pc, #212]  ; (8002e88 <_Z18SystemClock_Configv+0x10c>)
- 8002db4:      f043 5380       orr.w   r3, r3, #268435456      ; 0x10000000
- 8002db8:      6413            str     r3, [r2, #64]   ; 0x40
- 8002dba:      4b33            ldr     r3, [pc, #204]  ; (8002e88 <_Z18SystemClock_Configv+0x10c>)
- 8002dbc:      6c1b            ldr     r3, [r3, #64]   ; 0x40
- 8002dbe:      f003 5380       and.w   r3, r3, #268435456      ; 0x10000000
- 8002dc2:      607b            str     r3, [r7, #4]
- 8002dc4:      687b            ldr     r3, [r7, #4]
+ 80030ce:      4b36            ldr     r3, [pc, #216]  ; (80031a8 <_Z18SystemClock_Configv+0x10c>)
+ 80030d0:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 80030d2:      4a35            ldr     r2, [pc, #212]  ; (80031a8 <_Z18SystemClock_Configv+0x10c>)
+ 80030d4:      f043 5380       orr.w   r3, r3, #268435456      ; 0x10000000
+ 80030d8:      6413            str     r3, [r2, #64]   ; 0x40
+ 80030da:      4b33            ldr     r3, [pc, #204]  ; (80031a8 <_Z18SystemClock_Configv+0x10c>)
+ 80030dc:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 80030de:      f003 5380       and.w   r3, r3, #268435456      ; 0x10000000
+ 80030e2:      607b            str     r3, [r7, #4]
+ 80030e4:      687b            ldr     r3, [r7, #4]
   __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);
- 8002dc6:      4b31            ldr     r3, [pc, #196]  ; (8002e8c <_Z18SystemClock_Configv+0x110>)
- 8002dc8:      681b            ldr     r3, [r3, #0]
- 8002dca:      f423 4340       bic.w   r3, r3, #49152  ; 0xc000
- 8002dce:      4a2f            ldr     r2, [pc, #188]  ; (8002e8c <_Z18SystemClock_Configv+0x110>)
- 8002dd0:      f443 4380       orr.w   r3, r3, #16384  ; 0x4000
- 8002dd4:      6013            str     r3, [r2, #0]
- 8002dd6:      4b2d            ldr     r3, [pc, #180]  ; (8002e8c <_Z18SystemClock_Configv+0x110>)
- 8002dd8:      681b            ldr     r3, [r3, #0]
- 8002dda:      f403 4340       and.w   r3, r3, #49152  ; 0xc000
- 8002dde:      603b            str     r3, [r7, #0]
- 8002de0:      683b            ldr     r3, [r7, #0]
+ 80030e6:      4b31            ldr     r3, [pc, #196]  ; (80031ac <_Z18SystemClock_Configv+0x110>)
+ 80030e8:      681b            ldr     r3, [r3, #0]
+ 80030ea:      f423 4340       bic.w   r3, r3, #49152  ; 0xc000
+ 80030ee:      4a2f            ldr     r2, [pc, #188]  ; (80031ac <_Z18SystemClock_Configv+0x110>)
+ 80030f0:      f443 4380       orr.w   r3, r3, #16384  ; 0x4000
+ 80030f4:      6013            str     r3, [r2, #0]
+ 80030f6:      4b2d            ldr     r3, [pc, #180]  ; (80031ac <_Z18SystemClock_Configv+0x110>)
+ 80030f8:      681b            ldr     r3, [r3, #0]
+ 80030fa:      f403 4340       and.w   r3, r3, #49152  ; 0xc000
+ 80030fe:      603b            str     r3, [r7, #0]
+ 8003100:      683b            ldr     r3, [r7, #0]
   /** Initializes the CPU, AHB and APB busses clocks 
   */
   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
- 8002de2:      2302            movs    r3, #2
- 8002de4:      f8c7 30ac       str.w   r3, [r7, #172]  ; 0xac
+ 8003102:      2302            movs    r3, #2
+ 8003104:      f8c7 30ac       str.w   r3, [r7, #172]  ; 0xac
   RCC_OscInitStruct.HSIState = RCC_HSI_ON;
- 8002de8:      2301            movs    r3, #1
- 8002dea:      f8c7 30b8       str.w   r3, [r7, #184]  ; 0xb8
+ 8003108:      2301            movs    r3, #1
+ 800310a:      f8c7 30b8       str.w   r3, [r7, #184]  ; 0xb8
   RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
- 8002dee:      2310            movs    r3, #16
- 8002df0:      f8c7 30bc       str.w   r3, [r7, #188]  ; 0xbc
+ 800310e:      2310            movs    r3, #16
+ 8003110:      f8c7 30bc       str.w   r3, [r7, #188]  ; 0xbc
   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
- 8002df4:      2300            movs    r3, #0
- 8002df6:      f8c7 30c4       str.w   r3, [r7, #196]  ; 0xc4
+ 8003114:      2300            movs    r3, #0
+ 8003116:      f8c7 30c4       str.w   r3, [r7, #196]  ; 0xc4
   if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
- 8002dfa:      f107 03ac       add.w   r3, r7, #172    ; 0xac
- 8002dfe:      4618            mov     r0, r3
- 8002e00:      f7fe f9be       bl      8001180 <HAL_RCC_OscConfig>
- 8002e04:      4603            mov     r3, r0
- 8002e06:      2b00            cmp     r3, #0
- 8002e08:      bf14            ite     ne
- 8002e0a:      2301            movne   r3, #1
- 8002e0c:      2300            moveq   r3, #0
- 8002e0e:      b2db            uxtb    r3, r3
- 8002e10:      2b00            cmp     r3, #0
- 8002e12:      d001            beq.n   8002e18 <_Z18SystemClock_Configv+0x9c>
+ 800311a:      f107 03ac       add.w   r3, r7, #172    ; 0xac
+ 800311e:      4618            mov     r0, r3
+ 8003120:      f7fe f82e       bl      8001180 <HAL_RCC_OscConfig>
+ 8003124:      4603            mov     r3, r0
+ 8003126:      2b00            cmp     r3, #0
+ 8003128:      bf14            ite     ne
+ 800312a:      2301            movne   r3, #1
+ 800312c:      2300            moveq   r3, #0
+ 800312e:      b2db            uxtb    r3, r3
+ 8003130:      2b00            cmp     r3, #0
+ 8003132:      d001            beq.n   8003138 <_Z18SystemClock_Configv+0x9c>
   {
     Error_Handler();
- 8002e14:      f000 f8ae       bl      8002f74 <Error_Handler>
+ 8003134:      f000 f918       bl      8003368 <Error_Handler>
   }
   /** Initializes the CPU, AHB and APB busses clocks 
   */
   RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
- 8002e18:      230f            movs    r3, #15
- 8002e1a:      f8c7 3098       str.w   r3, [r7, #152]  ; 0x98
+ 8003138:      230f            movs    r3, #15
+ 800313a:      f8c7 3098       str.w   r3, [r7, #152]  ; 0x98
                               |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
- 8002e1e:      2300            movs    r3, #0
- 8002e20:      f8c7 309c       str.w   r3, [r7, #156]  ; 0x9c
+ 800313e:      2300            movs    r3, #0
+ 8003140:      f8c7 309c       str.w   r3, [r7, #156]  ; 0x9c
   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
- 8002e24:      2300            movs    r3, #0
- 8002e26:      f8c7 30a0       str.w   r3, [r7, #160]  ; 0xa0
+ 8003144:      2300            movs    r3, #0
+ 8003146:      f8c7 30a0       str.w   r3, [r7, #160]  ; 0xa0
   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
- 8002e2a:      2300            movs    r3, #0
- 8002e2c:      f8c7 30a4       str.w   r3, [r7, #164]  ; 0xa4
+ 800314a:      2300            movs    r3, #0
+ 800314c:      f8c7 30a4       str.w   r3, [r7, #164]  ; 0xa4
   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
- 8002e30:      2300            movs    r3, #0
- 8002e32:      f8c7 30a8       str.w   r3, [r7, #168]  ; 0xa8
+ 8003150:      2300            movs    r3, #0
+ 8003152:      f8c7 30a8       str.w   r3, [r7, #168]  ; 0xa8
 
   if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
- 8002e36:      f107 0398       add.w   r3, r7, #152    ; 0x98
- 8002e3a:      2100            movs    r1, #0
- 8002e3c:      4618            mov     r0, r3
- 8002e3e:      f7fe fc11       bl      8001664 <HAL_RCC_ClockConfig>
- 8002e42:      4603            mov     r3, r0
- 8002e44:      2b00            cmp     r3, #0
- 8002e46:      bf14            ite     ne
- 8002e48:      2301            movne   r3, #1
- 8002e4a:      2300            moveq   r3, #0
- 8002e4c:      b2db            uxtb    r3, r3
- 8002e4e:      2b00            cmp     r3, #0
- 8002e50:      d001            beq.n   8002e56 <_Z18SystemClock_Configv+0xda>
+ 8003156:      f107 0398       add.w   r3, r7, #152    ; 0x98
+ 800315a:      2100            movs    r1, #0
+ 800315c:      4618            mov     r0, r3
+ 800315e:      f7fe fa81       bl      8001664 <HAL_RCC_ClockConfig>
+ 8003162:      4603            mov     r3, r0
+ 8003164:      2b00            cmp     r3, #0
+ 8003166:      bf14            ite     ne
+ 8003168:      2301            movne   r3, #1
+ 800316a:      2300            moveq   r3, #0
+ 800316c:      b2db            uxtb    r3, r3
+ 800316e:      2b00            cmp     r3, #0
+ 8003170:      d001            beq.n   8003176 <_Z18SystemClock_Configv+0xda>
   {
     Error_Handler();
- 8002e52:      f000 f88f       bl      8002f74 <Error_Handler>
+ 8003172:      f000 f8f9       bl      8003368 <Error_Handler>
   }
   PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART3;
- 8002e56:      f44f 7380       mov.w   r3, #256        ; 0x100
- 8002e5a:      60bb            str     r3, [r7, #8]
+ 8003176:      f44f 7380       mov.w   r3, #256        ; 0x100
+ 800317a:      60bb            str     r3, [r7, #8]
   PeriphClkInitStruct.Usart3ClockSelection = RCC_USART3CLKSOURCE_PCLK1;
- 8002e5c:      2300            movs    r3, #0
- 8002e5e:      657b            str     r3, [r7, #84]   ; 0x54
+ 800317c:      2300            movs    r3, #0
+ 800317e:      657b            str     r3, [r7, #84]   ; 0x54
   if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
- 8002e60:      f107 0308       add.w   r3, r7, #8
- 8002e64:      4618            mov     r0, r3
- 8002e66:      f7fe fdcb       bl      8001a00 <HAL_RCCEx_PeriphCLKConfig>
- 8002e6a:      4603            mov     r3, r0
- 8002e6c:      2b00            cmp     r3, #0
- 8002e6e:      bf14            ite     ne
- 8002e70:      2301            movne   r3, #1
- 8002e72:      2300            moveq   r3, #0
- 8002e74:      b2db            uxtb    r3, r3
- 8002e76:      2b00            cmp     r3, #0
- 8002e78:      d001            beq.n   8002e7e <_Z18SystemClock_Configv+0x102>
+ 8003180:      f107 0308       add.w   r3, r7, #8
+ 8003184:      4618            mov     r0, r3
+ 8003186:      f7fe fc3b       bl      8001a00 <HAL_RCCEx_PeriphCLKConfig>
+ 800318a:      4603            mov     r3, r0
+ 800318c:      2b00            cmp     r3, #0
+ 800318e:      bf14            ite     ne
+ 8003190:      2301            movne   r3, #1
+ 8003192:      2300            moveq   r3, #0
+ 8003194:      b2db            uxtb    r3, r3
+ 8003196:      2b00            cmp     r3, #0
+ 8003198:      d001            beq.n   800319e <_Z18SystemClock_Configv+0x102>
   {
     Error_Handler();
- 8002e7a:      f000 f87b       bl      8002f74 <Error_Handler>
+ 800319a:      f000 f8e5       bl      8003368 <Error_Handler>
   }
 }
- 8002e7e:      bf00            nop
- 8002e80:      37e0            adds    r7, #224        ; 0xe0
- 8002e82:      46bd            mov     sp, r7
- 8002e84:      bd80            pop     {r7, pc}
- 8002e86:      bf00            nop
- 8002e88:      40023800        .word   0x40023800
- 8002e8c:      40007000        .word   0x40007000
-
-08002e90 <_ZL19MX_USART3_UART_Initv>:
+ 800319e:      bf00            nop
+ 80031a0:      37e0            adds    r7, #224        ; 0xe0
+ 80031a2:      46bd            mov     sp, r7
+ 80031a4:      bd80            pop     {r7, pc}
+ 80031a6:      bf00            nop
+ 80031a8:      40023800        .word   0x40023800
+ 80031ac:      40007000        .word   0x40007000
+
+080031b0 <_ZL12MX_TIM2_Initv>:
+  * @brief TIM2 Initialization Function
+  * @param None
+  * @retval None
+  */
+static void MX_TIM2_Init(void)
+{
+ 80031b0:      b580            push    {r7, lr}
+ 80031b2:      b08c            sub     sp, #48 ; 0x30
+ 80031b4:      af00            add     r7, sp, #0
+
+  /* USER CODE BEGIN TIM2_Init 0 */
+
+  /* USER CODE END TIM2_Init 0 */
+
+  TIM_Encoder_InitTypeDef sConfig = {0};
+ 80031b6:      f107 030c       add.w   r3, r7, #12
+ 80031ba:      2224            movs    r2, #36 ; 0x24
+ 80031bc:      2100            movs    r1, #0
+ 80031be:      4618            mov     r0, r3
+ 80031c0:      f000 fac4       bl      800374c <memset>
+  TIM_MasterConfigTypeDef sMasterConfig = {0};
+ 80031c4:      463b            mov     r3, r7
+ 80031c6:      2200            movs    r2, #0
+ 80031c8:      601a            str     r2, [r3, #0]
+ 80031ca:      605a            str     r2, [r3, #4]
+ 80031cc:      609a            str     r2, [r3, #8]
+
+  /* USER CODE BEGIN TIM2_Init 1 */
+
+  /* USER CODE END TIM2_Init 1 */
+  htim2.Instance = TIM2;
+ 80031ce:      4b26            ldr     r3, [pc, #152]  ; (8003268 <_ZL12MX_TIM2_Initv+0xb8>)
+ 80031d0:      f04f 4280       mov.w   r2, #1073741824 ; 0x40000000
+ 80031d4:      601a            str     r2, [r3, #0]
+  htim2.Init.Prescaler = 0;
+ 80031d6:      4b24            ldr     r3, [pc, #144]  ; (8003268 <_ZL12MX_TIM2_Initv+0xb8>)
+ 80031d8:      2200            movs    r2, #0
+ 80031da:      605a            str     r2, [r3, #4]
+  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
+ 80031dc:      4b22            ldr     r3, [pc, #136]  ; (8003268 <_ZL12MX_TIM2_Initv+0xb8>)
+ 80031de:      2200            movs    r2, #0
+ 80031e0:      609a            str     r2, [r3, #8]
+  htim2.Init.Period = 0;
+ 80031e2:      4b21            ldr     r3, [pc, #132]  ; (8003268 <_ZL12MX_TIM2_Initv+0xb8>)
+ 80031e4:      2200            movs    r2, #0
+ 80031e6:      60da            str     r2, [r3, #12]
+  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
+ 80031e8:      4b1f            ldr     r3, [pc, #124]  ; (8003268 <_ZL12MX_TIM2_Initv+0xb8>)
+ 80031ea:      2200            movs    r2, #0
+ 80031ec:      611a            str     r2, [r3, #16]
+  htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
+ 80031ee:      4b1e            ldr     r3, [pc, #120]  ; (8003268 <_ZL12MX_TIM2_Initv+0xb8>)
+ 80031f0:      2200            movs    r2, #0
+ 80031f2:      619a            str     r2, [r3, #24]
+  sConfig.EncoderMode = TIM_ENCODERMODE_TI1;
+ 80031f4:      2301            movs    r3, #1
+ 80031f6:      60fb            str     r3, [r7, #12]
+  sConfig.IC1Polarity = TIM_ICPOLARITY_RISING;
+ 80031f8:      2300            movs    r3, #0
+ 80031fa:      613b            str     r3, [r7, #16]
+  sConfig.IC1Selection = TIM_ICSELECTION_DIRECTTI;
+ 80031fc:      2301            movs    r3, #1
+ 80031fe:      617b            str     r3, [r7, #20]
+  sConfig.IC1Prescaler = TIM_ICPSC_DIV1;
+ 8003200:      2300            movs    r3, #0
+ 8003202:      61bb            str     r3, [r7, #24]
+  sConfig.IC1Filter = 0;
+ 8003204:      2300            movs    r3, #0
+ 8003206:      61fb            str     r3, [r7, #28]
+  sConfig.IC2Polarity = TIM_ICPOLARITY_RISING;
+ 8003208:      2300            movs    r3, #0
+ 800320a:      623b            str     r3, [r7, #32]
+  sConfig.IC2Selection = TIM_ICSELECTION_DIRECTTI;
+ 800320c:      2301            movs    r3, #1
+ 800320e:      627b            str     r3, [r7, #36]   ; 0x24
+  sConfig.IC2Prescaler = TIM_ICPSC_DIV1;
+ 8003210:      2300            movs    r3, #0
+ 8003212:      62bb            str     r3, [r7, #40]   ; 0x28
+  sConfig.IC2Filter = 0;
+ 8003214:      2300            movs    r3, #0
+ 8003216:      62fb            str     r3, [r7, #44]   ; 0x2c
+  if (HAL_TIM_Encoder_Init(&htim2, &sConfig) != HAL_OK)
+ 8003218:      f107 030c       add.w   r3, r7, #12
+ 800321c:      4619            mov     r1, r3
+ 800321e:      4812            ldr     r0, [pc, #72]   ; (8003268 <_ZL12MX_TIM2_Initv+0xb8>)
+ 8003220:      f7ff f814       bl      800224c <HAL_TIM_Encoder_Init>
+ 8003224:      4603            mov     r3, r0
+ 8003226:      2b00            cmp     r3, #0
+ 8003228:      bf14            ite     ne
+ 800322a:      2301            movne   r3, #1
+ 800322c:      2300            moveq   r3, #0
+ 800322e:      b2db            uxtb    r3, r3
+ 8003230:      2b00            cmp     r3, #0
+ 8003232:      d001            beq.n   8003238 <_ZL12MX_TIM2_Initv+0x88>
+  {
+    Error_Handler();
+ 8003234:      f000 f898       bl      8003368 <Error_Handler>
+  }
+  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
+ 8003238:      2300            movs    r3, #0
+ 800323a:      603b            str     r3, [r7, #0]
+  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
+ 800323c:      2300            movs    r3, #0
+ 800323e:      60bb            str     r3, [r7, #8]
+  if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
+ 8003240:      463b            mov     r3, r7
+ 8003242:      4619            mov     r1, r3
+ 8003244:      4808            ldr     r0, [pc, #32]   ; (8003268 <_ZL12MX_TIM2_Initv+0xb8>)
+ 8003246:      f7ff f933       bl      80024b0 <HAL_TIMEx_MasterConfigSynchronization>
+ 800324a:      4603            mov     r3, r0
+ 800324c:      2b00            cmp     r3, #0
+ 800324e:      bf14            ite     ne
+ 8003250:      2301            movne   r3, #1
+ 8003252:      2300            moveq   r3, #0
+ 8003254:      b2db            uxtb    r3, r3
+ 8003256:      2b00            cmp     r3, #0
+ 8003258:      d001            beq.n   800325e <_ZL12MX_TIM2_Initv+0xae>
+  {
+    Error_Handler();
+ 800325a:      f000 f885       bl      8003368 <Error_Handler>
+  }
+  /* USER CODE BEGIN TIM2_Init 2 */
+
+  /* USER CODE END TIM2_Init 2 */
+
+}
+ 800325e:      bf00            nop
+ 8003260:      3730            adds    r7, #48 ; 0x30
+ 8003262:      46bd            mov     sp, r7
+ 8003264:      bd80            pop     {r7, pc}
+ 8003266:      bf00            nop
+ 8003268:      20000028        .word   0x20000028
+
+0800326c <_ZL19MX_USART3_UART_Initv>:
   * @brief USART3 Initialization Function
   * @param None
   * @retval None
   */
 static void MX_USART3_UART_Init(void)
 {
- 8002e90:      b580            push    {r7, lr}
- 8002e92:      af00            add     r7, sp, #0
+ 800326c:      b580            push    {r7, lr}
+ 800326e:      af00            add     r7, sp, #0
   /* USER CODE END USART3_Init 0 */
 
   /* USER CODE BEGIN USART3_Init 1 */
 
   /* USER CODE END USART3_Init 1 */
   huart3.Instance = USART3;
- 8002e94:      4b16            ldr     r3, [pc, #88]   ; (8002ef0 <_ZL19MX_USART3_UART_Initv+0x60>)
- 8002e96:      4a17            ldr     r2, [pc, #92]   ; (8002ef4 <_ZL19MX_USART3_UART_Initv+0x64>)
- 8002e98:      601a            str     r2, [r3, #0]
+ 8003270:      4b16            ldr     r3, [pc, #88]   ; (80032cc <_ZL19MX_USART3_UART_Initv+0x60>)
+ 8003272:      4a17            ldr     r2, [pc, #92]   ; (80032d0 <_ZL19MX_USART3_UART_Initv+0x64>)
+ 8003274:      601a            str     r2, [r3, #0]
   huart3.Init.BaudRate = 115200;
- 8002e9a:      4b15            ldr     r3, [pc, #84]   ; (8002ef0 <_ZL19MX_USART3_UART_Initv+0x60>)
- 8002e9c:      f44f 32e1       mov.w   r2, #115200     ; 0x1c200
- 8002ea0:      605a            str     r2, [r3, #4]
+ 8003276:      4b15            ldr     r3, [pc, #84]   ; (80032cc <_ZL19MX_USART3_UART_Initv+0x60>)
+ 8003278:      f44f 32e1       mov.w   r2, #115200     ; 0x1c200
+ 800327c:      605a            str     r2, [r3, #4]
   huart3.Init.WordLength = UART_WORDLENGTH_8B;
- 8002ea2:      4b13            ldr     r3, [pc, #76]   ; (8002ef0 <_ZL19MX_USART3_UART_Initv+0x60>)
- 8002ea4:      2200            movs    r2, #0
- 8002ea6:      609a            str     r2, [r3, #8]
+ 800327e:      4b13            ldr     r3, [pc, #76]   ; (80032cc <_ZL19MX_USART3_UART_Initv+0x60>)
+ 8003280:      2200            movs    r2, #0
+ 8003282:      609a            str     r2, [r3, #8]
   huart3.Init.StopBits = UART_STOPBITS_1;
- 8002ea8:      4b11            ldr     r3, [pc, #68]   ; (8002ef0 <_ZL19MX_USART3_UART_Initv+0x60>)
- 8002eaa:      2200            movs    r2, #0
- 8002eac:      60da            str     r2, [r3, #12]
+ 8003284:      4b11            ldr     r3, [pc, #68]   ; (80032cc <_ZL19MX_USART3_UART_Initv+0x60>)
+ 8003286:      2200            movs    r2, #0
+ 8003288:      60da            str     r2, [r3, #12]
   huart3.Init.Parity = UART_PARITY_NONE;
- 8002eae:      4b10            ldr     r3, [pc, #64]   ; (8002ef0 <_ZL19MX_USART3_UART_Initv+0x60>)
- 8002eb0:      2200            movs    r2, #0
- 8002eb2:      611a            str     r2, [r3, #16]
+ 800328a:      4b10            ldr     r3, [pc, #64]   ; (80032cc <_ZL19MX_USART3_UART_Initv+0x60>)
+ 800328c:      2200            movs    r2, #0
+ 800328e:      611a            str     r2, [r3, #16]
   huart3.Init.Mode = UART_MODE_TX_RX;
- 8002eb4:      4b0e            ldr     r3, [pc, #56]   ; (8002ef0 <_ZL19MX_USART3_UART_Initv+0x60>)
- 8002eb6:      220c            movs    r2, #12
- 8002eb8:      615a            str     r2, [r3, #20]
+ 8003290:      4b0e            ldr     r3, [pc, #56]   ; (80032cc <_ZL19MX_USART3_UART_Initv+0x60>)
+ 8003292:      220c            movs    r2, #12
+ 8003294:      615a            str     r2, [r3, #20]
   huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
- 8002eba:      4b0d            ldr     r3, [pc, #52]   ; (8002ef0 <_ZL19MX_USART3_UART_Initv+0x60>)
- 8002ebc:      2200            movs    r2, #0
- 8002ebe:      619a            str     r2, [r3, #24]
+ 8003296:      4b0d            ldr     r3, [pc, #52]   ; (80032cc <_ZL19MX_USART3_UART_Initv+0x60>)
+ 8003298:      2200            movs    r2, #0
+ 800329a:      619a            str     r2, [r3, #24]
   huart3.Init.OverSampling = UART_OVERSAMPLING_16;
- 8002ec0:      4b0b            ldr     r3, [pc, #44]   ; (8002ef0 <_ZL19MX_USART3_UART_Initv+0x60>)
- 8002ec2:      2200            movs    r2, #0
- 8002ec4:      61da            str     r2, [r3, #28]
+ 800329c:      4b0b            ldr     r3, [pc, #44]   ; (80032cc <_ZL19MX_USART3_UART_Initv+0x60>)
+ 800329e:      2200            movs    r2, #0
+ 80032a0:      61da            str     r2, [r3, #28]
   huart3.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
- 8002ec6:      4b0a            ldr     r3, [pc, #40]   ; (8002ef0 <_ZL19MX_USART3_UART_Initv+0x60>)
- 8002ec8:      2200            movs    r2, #0
- 8002eca:      621a            str     r2, [r3, #32]
+ 80032a2:      4b0a            ldr     r3, [pc, #40]   ; (80032cc <_ZL19MX_USART3_UART_Initv+0x60>)
+ 80032a4:      2200            movs    r2, #0
+ 80032a6:      621a            str     r2, [r3, #32]
   huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
- 8002ecc:      4b08            ldr     r3, [pc, #32]   ; (8002ef0 <_ZL19MX_USART3_UART_Initv+0x60>)
- 8002ece:      2200            movs    r2, #0
- 8002ed0:      625a            str     r2, [r3, #36]   ; 0x24
+ 80032a8:      4b08            ldr     r3, [pc, #32]   ; (80032cc <_ZL19MX_USART3_UART_Initv+0x60>)
+ 80032aa:      2200            movs    r2, #0
+ 80032ac:      625a            str     r2, [r3, #36]   ; 0x24
   if (HAL_UART_Init(&huart3) != HAL_OK)
- 8002ed2:      4807            ldr     r0, [pc, #28]   ; (8002ef0 <_ZL19MX_USART3_UART_Initv+0x60>)
- 8002ed4:      f7ff f9ba       bl      800224c <HAL_UART_Init>
- 8002ed8:      4603            mov     r3, r0
- 8002eda:      2b00            cmp     r3, #0
- 8002edc:      bf14            ite     ne
- 8002ede:      2301            movne   r3, #1
- 8002ee0:      2300            moveq   r3, #0
- 8002ee2:      b2db            uxtb    r3, r3
- 8002ee4:      2b00            cmp     r3, #0
- 8002ee6:      d001            beq.n   8002eec <_ZL19MX_USART3_UART_Initv+0x5c>
+ 80032ae:      4807            ldr     r0, [pc, #28]   ; (80032cc <_ZL19MX_USART3_UART_Initv+0x60>)
+ 80032b0:      f7ff f95a       bl      8002568 <HAL_UART_Init>
+ 80032b4:      4603            mov     r3, r0
+ 80032b6:      2b00            cmp     r3, #0
+ 80032b8:      bf14            ite     ne
+ 80032ba:      2301            movne   r3, #1
+ 80032bc:      2300            moveq   r3, #0
+ 80032be:      b2db            uxtb    r3, r3
+ 80032c0:      2b00            cmp     r3, #0
+ 80032c2:      d001            beq.n   80032c8 <_ZL19MX_USART3_UART_Initv+0x5c>
   {
     Error_Handler();
- 8002ee8:      f000 f844       bl      8002f74 <Error_Handler>
+ 80032c4:      f000 f850       bl      8003368 <Error_Handler>
   }
   /* USER CODE BEGIN USART3_Init 2 */
 
   /* USER CODE END USART3_Init 2 */
 
 }
- 8002eec:      bf00            nop
- 8002eee:      bd80            pop     {r7, pc}
- 8002ef0:      20000028        .word   0x20000028
- 8002ef4:      40004800        .word   0x40004800
+ 80032c8:      bf00            nop
+ 80032ca:      bd80            pop     {r7, pc}
+ 80032cc:      20000068        .word   0x20000068
+ 80032d0:      40004800        .word   0x40004800
 
-08002ef8 <_ZL11MX_DMA_Initv>:
+080032d4 <_ZL11MX_DMA_Initv>:
 
 /** 
   * Enable DMA controller clock
   */
 static void MX_DMA_Init(void) 
 {
- 8002ef8:      b580            push    {r7, lr}
- 8002efa:      b082            sub     sp, #8
- 8002efc:      af00            add     r7, sp, #0
+ 80032d4:      b580            push    {r7, lr}
+ 80032d6:      b082            sub     sp, #8
+ 80032d8:      af00            add     r7, sp, #0
 
   /* DMA controller clock enable */
   __HAL_RCC_DMA1_CLK_ENABLE();
- 8002efe:      4b10            ldr     r3, [pc, #64]   ; (8002f40 <_ZL11MX_DMA_Initv+0x48>)
- 8002f00:      6b1b            ldr     r3, [r3, #48]   ; 0x30
- 8002f02:      4a0f            ldr     r2, [pc, #60]   ; (8002f40 <_ZL11MX_DMA_Initv+0x48>)
- 8002f04:      f443 1300       orr.w   r3, r3, #2097152        ; 0x200000
- 8002f08:      6313            str     r3, [r2, #48]   ; 0x30
- 8002f0a:      4b0d            ldr     r3, [pc, #52]   ; (8002f40 <_ZL11MX_DMA_Initv+0x48>)
- 8002f0c:      6b1b            ldr     r3, [r3, #48]   ; 0x30
- 8002f0e:      f403 1300       and.w   r3, r3, #2097152        ; 0x200000
- 8002f12:      607b            str     r3, [r7, #4]
- 8002f14:      687b            ldr     r3, [r7, #4]
+ 80032da:      4b10            ldr     r3, [pc, #64]   ; (800331c <_ZL11MX_DMA_Initv+0x48>)
+ 80032dc:      6b1b            ldr     r3, [r3, #48]   ; 0x30
+ 80032de:      4a0f            ldr     r2, [pc, #60]   ; (800331c <_ZL11MX_DMA_Initv+0x48>)
+ 80032e0:      f443 1300       orr.w   r3, r3, #2097152        ; 0x200000
+ 80032e4:      6313            str     r3, [r2, #48]   ; 0x30
+ 80032e6:      4b0d            ldr     r3, [pc, #52]   ; (800331c <_ZL11MX_DMA_Initv+0x48>)
+ 80032e8:      6b1b            ldr     r3, [r3, #48]   ; 0x30
+ 80032ea:      f403 1300       and.w   r3, r3, #2097152        ; 0x200000
+ 80032ee:      607b            str     r3, [r7, #4]
+ 80032f0:      687b            ldr     r3, [r7, #4]
 
   /* DMA interrupt init */
   /* DMA1_Stream1_IRQn interrupt configuration */
   HAL_NVIC_SetPriority(DMA1_Stream1_IRQn, 0, 0);
- 8002f16:      2200            movs    r2, #0
- 8002f18:      2100            movs    r1, #0
- 8002f1a:      200c            movs    r0, #12
- 8002f1c:      f7fd fc45       bl      80007aa <HAL_NVIC_SetPriority>
+ 80032f2:      2200            movs    r2, #0
+ 80032f4:      2100            movs    r1, #0
+ 80032f6:      200c            movs    r0, #12
+ 80032f8:      f7fd fa57       bl      80007aa <HAL_NVIC_SetPriority>
   HAL_NVIC_EnableIRQ(DMA1_Stream1_IRQn);
- 8002f20:      200c            movs    r0, #12
- 8002f22:      f7fd fc5e       bl      80007e2 <HAL_NVIC_EnableIRQ>
+ 80032fc:      200c            movs    r0, #12
+ 80032fe:      f7fd fa70       bl      80007e2 <HAL_NVIC_EnableIRQ>
   /* DMA1_Stream3_IRQn interrupt configuration */
   HAL_NVIC_SetPriority(DMA1_Stream3_IRQn, 0, 0);
- 8002f26:      2200            movs    r2, #0
- 8002f28:      2100            movs    r1, #0
- 8002f2a:      200e            movs    r0, #14
- 8002f2c:      f7fd fc3d       bl      80007aa <HAL_NVIC_SetPriority>
+ 8003302:      2200            movs    r2, #0
+ 8003304:      2100            movs    r1, #0
+ 8003306:      200e            movs    r0, #14
+ 8003308:      f7fd fa4f       bl      80007aa <HAL_NVIC_SetPriority>
   HAL_NVIC_EnableIRQ(DMA1_Stream3_IRQn);
- 8002f30:      200e            movs    r0, #14
- 8002f32:      f7fd fc56       bl      80007e2 <HAL_NVIC_EnableIRQ>
+ 800330c:      200e            movs    r0, #14
+ 800330e:      f7fd fa68       bl      80007e2 <HAL_NVIC_EnableIRQ>
 
 }
- 8002f36:      bf00            nop
- 8002f38:      3708            adds    r7, #8
- 8002f3a:      46bd            mov     sp, r7
- 8002f3c:      bd80            pop     {r7, pc}
- 8002f3e:      bf00            nop
- 8002f40:      40023800        .word   0x40023800
-
-08002f44 <_ZL12MX_GPIO_Initv>:
+ 8003312:      bf00            nop
+ 8003314:      3708            adds    r7, #8
+ 8003316:      46bd            mov     sp, r7
+ 8003318:      bd80            pop     {r7, pc}
+ 800331a:      bf00            nop
+ 800331c:      40023800        .word   0x40023800
+
+08003320 <_ZL12MX_GPIO_Initv>:
   * @brief GPIO Initialization Function
   * @param None
   * @retval None
   */
 static void MX_GPIO_Init(void)
 {
- 8002f44:      b480            push    {r7}
- 8002f46:      b083            sub     sp, #12
- 8002f48:      af00            add     r7, sp, #0
+ 8003320:      b480            push    {r7}
+ 8003322:      b083            sub     sp, #12
+ 8003324:      af00            add     r7, sp, #0
 
   /* GPIO Ports Clock Enable */
+  __HAL_RCC_GPIOA_CLK_ENABLE();
+ 8003326:      4b0f            ldr     r3, [pc, #60]   ; (8003364 <_ZL12MX_GPIO_Initv+0x44>)
+ 8003328:      6b1b            ldr     r3, [r3, #48]   ; 0x30
+ 800332a:      4a0e            ldr     r2, [pc, #56]   ; (8003364 <_ZL12MX_GPIO_Initv+0x44>)
+ 800332c:      f043 0301       orr.w   r3, r3, #1
+ 8003330:      6313            str     r3, [r2, #48]   ; 0x30
+ 8003332:      4b0c            ldr     r3, [pc, #48]   ; (8003364 <_ZL12MX_GPIO_Initv+0x44>)
+ 8003334:      6b1b            ldr     r3, [r3, #48]   ; 0x30
+ 8003336:      f003 0301       and.w   r3, r3, #1
+ 800333a:      607b            str     r3, [r7, #4]
+ 800333c:      687b            ldr     r3, [r7, #4]
   __HAL_RCC_GPIOD_CLK_ENABLE();
- 8002f4a:      4b09            ldr     r3, [pc, #36]   ; (8002f70 <_ZL12MX_GPIO_Initv+0x2c>)
- 8002f4c:      6b1b            ldr     r3, [r3, #48]   ; 0x30
- 8002f4e:      4a08            ldr     r2, [pc, #32]   ; (8002f70 <_ZL12MX_GPIO_Initv+0x2c>)
- 8002f50:      f043 0308       orr.w   r3, r3, #8
- 8002f54:      6313            str     r3, [r2, #48]   ; 0x30
- 8002f56:      4b06            ldr     r3, [pc, #24]   ; (8002f70 <_ZL12MX_GPIO_Initv+0x2c>)
- 8002f58:      6b1b            ldr     r3, [r3, #48]   ; 0x30
- 8002f5a:      f003 0308       and.w   r3, r3, #8
- 8002f5e:      607b            str     r3, [r7, #4]
- 8002f60:      687b            ldr     r3, [r7, #4]
+ 800333e:      4b09            ldr     r3, [pc, #36]   ; (8003364 <_ZL12MX_GPIO_Initv+0x44>)
+ 8003340:      6b1b            ldr     r3, [r3, #48]   ; 0x30
+ 8003342:      4a08            ldr     r2, [pc, #32]   ; (8003364 <_ZL12MX_GPIO_Initv+0x44>)
+ 8003344:      f043 0308       orr.w   r3, r3, #8
+ 8003348:      6313            str     r3, [r2, #48]   ; 0x30
+ 800334a:      4b06            ldr     r3, [pc, #24]   ; (8003364 <_ZL12MX_GPIO_Initv+0x44>)
+ 800334c:      6b1b            ldr     r3, [r3, #48]   ; 0x30
+ 800334e:      f003 0308       and.w   r3, r3, #8
+ 8003352:      603b            str     r3, [r7, #0]
+ 8003354:      683b            ldr     r3, [r7, #0]
 
 }
- 8002f62:      bf00            nop
- 8002f64:      370c            adds    r7, #12
- 8002f66:      46bd            mov     sp, r7
- 8002f68:      f85d 7b04       ldr.w   r7, [sp], #4
- 8002f6c:      4770            bx      lr
- 8002f6e:      bf00            nop
- 8002f70:      40023800        .word   0x40023800
-
-08002f74 <Error_Handler>:
+ 8003356:      bf00            nop
+ 8003358:      370c            adds    r7, #12
+ 800335a:      46bd            mov     sp, r7
+ 800335c:      f85d 7b04       ldr.w   r7, [sp], #4
+ 8003360:      4770            bx      lr
+ 8003362:      bf00            nop
+ 8003364:      40023800        .word   0x40023800
+
+08003368 <Error_Handler>:
 /**
   * @brief  This function is executed in case of error occurrence.
   * @retval None
   */
 void Error_Handler(void)
 {
- 8002f74:      b480            push    {r7}
- 8002f76:      af00            add     r7, sp, #0
+ 8003368:      b480            push    {r7}
+ 800336a:      af00            add     r7, sp, #0
   /* USER CODE BEGIN Error_Handler_Debug */
   /* User can add his own implementation to report the HAL error return state */
 
   /* USER CODE END Error_Handler_Debug */
 }
- 8002f78:      bf00            nop
- 8002f7a:      46bd            mov     sp, r7
- 8002f7c:      f85d 7b04       ldr.w   r7, [sp], #4
- 8002f80:      4770            bx      lr
+ 800336c:      bf00            nop
+ 800336e:      46bd            mov     sp, r7
+ 8003370:      f85d 7b04       ldr.w   r7, [sp], #4
+ 8003374:      4770            bx      lr
        ...
 
-08002f84 <HAL_MspInit>:
+08003378 <HAL_MspInit>:
 /* USER CODE END 0 */
 /**
   * Initializes the Global MSP.
   */
 void HAL_MspInit(void)
 {
- 8002f84:      b480            push    {r7}
- 8002f86:      b083            sub     sp, #12
- 8002f88:      af00            add     r7, sp, #0
+ 8003378:      b480            push    {r7}
+ 800337a:      b083            sub     sp, #12
+ 800337c:      af00            add     r7, sp, #0
   /* USER CODE BEGIN MspInit 0 */
 
   /* USER CODE END MspInit 0 */
 
   __HAL_RCC_PWR_CLK_ENABLE();
- 8002f8a:      4b0f            ldr     r3, [pc, #60]   ; (8002fc8 <HAL_MspInit+0x44>)
- 8002f8c:      6c1b            ldr     r3, [r3, #64]   ; 0x40
- 8002f8e:      4a0e            ldr     r2, [pc, #56]   ; (8002fc8 <HAL_MspInit+0x44>)
- 8002f90:      f043 5380       orr.w   r3, r3, #268435456      ; 0x10000000
- 8002f94:      6413            str     r3, [r2, #64]   ; 0x40
- 8002f96:      4b0c            ldr     r3, [pc, #48]   ; (8002fc8 <HAL_MspInit+0x44>)
- 8002f98:      6c1b            ldr     r3, [r3, #64]   ; 0x40
- 8002f9a:      f003 5380       and.w   r3, r3, #268435456      ; 0x10000000
- 8002f9e:      607b            str     r3, [r7, #4]
- 8002fa0:      687b            ldr     r3, [r7, #4]
+ 800337e:      4b0f            ldr     r3, [pc, #60]   ; (80033bc <HAL_MspInit+0x44>)
+ 8003380:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 8003382:      4a0e            ldr     r2, [pc, #56]   ; (80033bc <HAL_MspInit+0x44>)
+ 8003384:      f043 5380       orr.w   r3, r3, #268435456      ; 0x10000000
+ 8003388:      6413            str     r3, [r2, #64]   ; 0x40
+ 800338a:      4b0c            ldr     r3, [pc, #48]   ; (80033bc <HAL_MspInit+0x44>)
+ 800338c:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 800338e:      f003 5380       and.w   r3, r3, #268435456      ; 0x10000000
+ 8003392:      607b            str     r3, [r7, #4]
+ 8003394:      687b            ldr     r3, [r7, #4]
   __HAL_RCC_SYSCFG_CLK_ENABLE();
- 8002fa2:      4b09            ldr     r3, [pc, #36]   ; (8002fc8 <HAL_MspInit+0x44>)
- 8002fa4:      6c5b            ldr     r3, [r3, #68]   ; 0x44
- 8002fa6:      4a08            ldr     r2, [pc, #32]   ; (8002fc8 <HAL_MspInit+0x44>)
- 8002fa8:      f443 4380       orr.w   r3, r3, #16384  ; 0x4000
- 8002fac:      6453            str     r3, [r2, #68]   ; 0x44
- 8002fae:      4b06            ldr     r3, [pc, #24]   ; (8002fc8 <HAL_MspInit+0x44>)
- 8002fb0:      6c5b            ldr     r3, [r3, #68]   ; 0x44
- 8002fb2:      f403 4380       and.w   r3, r3, #16384  ; 0x4000
- 8002fb6:      603b            str     r3, [r7, #0]
- 8002fb8:      683b            ldr     r3, [r7, #0]
+ 8003396:      4b09            ldr     r3, [pc, #36]   ; (80033bc <HAL_MspInit+0x44>)
+ 8003398:      6c5b            ldr     r3, [r3, #68]   ; 0x44
+ 800339a:      4a08            ldr     r2, [pc, #32]   ; (80033bc <HAL_MspInit+0x44>)
+ 800339c:      f443 4380       orr.w   r3, r3, #16384  ; 0x4000
+ 80033a0:      6453            str     r3, [r2, #68]   ; 0x44
+ 80033a2:      4b06            ldr     r3, [pc, #24]   ; (80033bc <HAL_MspInit+0x44>)
+ 80033a4:      6c5b            ldr     r3, [r3, #68]   ; 0x44
+ 80033a6:      f403 4380       and.w   r3, r3, #16384  ; 0x4000
+ 80033aa:      603b            str     r3, [r7, #0]
+ 80033ac:      683b            ldr     r3, [r7, #0]
   /* System interrupt init*/
 
   /* USER CODE BEGIN MspInit 1 */
 
   /* USER CODE END MspInit 1 */
 }
- 8002fba:      bf00            nop
- 8002fbc:      370c            adds    r7, #12
- 8002fbe:      46bd            mov     sp, r7
- 8002fc0:      f85d 7b04       ldr.w   r7, [sp], #4
- 8002fc4:      4770            bx      lr
- 8002fc6:      bf00            nop
- 8002fc8:      40023800        .word   0x40023800
-
-08002fcc <HAL_UART_MspInit>:
+ 80033ae:      bf00            nop
+ 80033b0:      370c            adds    r7, #12
+ 80033b2:      46bd            mov     sp, r7
+ 80033b4:      f85d 7b04       ldr.w   r7, [sp], #4
+ 80033b8:      4770            bx      lr
+ 80033ba:      bf00            nop
+ 80033bc:      40023800        .word   0x40023800
+
+080033c0 <HAL_TIM_Encoder_MspInit>:
+* This function configures the hardware resources used in this example
+* @param htim_encoder: TIM_Encoder handle pointer
+* @retval None
+*/
+void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef* htim_encoder)
+{
+ 80033c0:      b580            push    {r7, lr}
+ 80033c2:      b08a            sub     sp, #40 ; 0x28
+ 80033c4:      af00            add     r7, sp, #0
+ 80033c6:      6078            str     r0, [r7, #4]
+  GPIO_InitTypeDef GPIO_InitStruct = {0};
+ 80033c8:      f107 0314       add.w   r3, r7, #20
+ 80033cc:      2200            movs    r2, #0
+ 80033ce:      601a            str     r2, [r3, #0]
+ 80033d0:      605a            str     r2, [r3, #4]
+ 80033d2:      609a            str     r2, [r3, #8]
+ 80033d4:      60da            str     r2, [r3, #12]
+ 80033d6:      611a            str     r2, [r3, #16]
+  if(htim_encoder->Instance==TIM2)
+ 80033d8:      687b            ldr     r3, [r7, #4]
+ 80033da:      681b            ldr     r3, [r3, #0]
+ 80033dc:      f1b3 4f80       cmp.w   r3, #1073741824 ; 0x40000000
+ 80033e0:      d127            bne.n   8003432 <HAL_TIM_Encoder_MspInit+0x72>
+  {
+  /* USER CODE BEGIN TIM2_MspInit 0 */
+
+  /* USER CODE END TIM2_MspInit 0 */
+    /* Peripheral clock enable */
+    __HAL_RCC_TIM2_CLK_ENABLE();
+ 80033e2:      4b16            ldr     r3, [pc, #88]   ; (800343c <HAL_TIM_Encoder_MspInit+0x7c>)
+ 80033e4:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 80033e6:      4a15            ldr     r2, [pc, #84]   ; (800343c <HAL_TIM_Encoder_MspInit+0x7c>)
+ 80033e8:      f043 0301       orr.w   r3, r3, #1
+ 80033ec:      6413            str     r3, [r2, #64]   ; 0x40
+ 80033ee:      4b13            ldr     r3, [pc, #76]   ; (800343c <HAL_TIM_Encoder_MspInit+0x7c>)
+ 80033f0:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 80033f2:      f003 0301       and.w   r3, r3, #1
+ 80033f6:      613b            str     r3, [r7, #16]
+ 80033f8:      693b            ldr     r3, [r7, #16]
+  
+    __HAL_RCC_GPIOA_CLK_ENABLE();
+ 80033fa:      4b10            ldr     r3, [pc, #64]   ; (800343c <HAL_TIM_Encoder_MspInit+0x7c>)
+ 80033fc:      6b1b            ldr     r3, [r3, #48]   ; 0x30
+ 80033fe:      4a0f            ldr     r2, [pc, #60]   ; (800343c <HAL_TIM_Encoder_MspInit+0x7c>)
+ 8003400:      f043 0301       orr.w   r3, r3, #1
+ 8003404:      6313            str     r3, [r2, #48]   ; 0x30
+ 8003406:      4b0d            ldr     r3, [pc, #52]   ; (800343c <HAL_TIM_Encoder_MspInit+0x7c>)
+ 8003408:      6b1b            ldr     r3, [r3, #48]   ; 0x30
+ 800340a:      f003 0301       and.w   r3, r3, #1
+ 800340e:      60fb            str     r3, [r7, #12]
+ 8003410:      68fb            ldr     r3, [r7, #12]
+    /**TIM2 GPIO Configuration    
+    PA0/WKUP     ------> TIM2_CH1
+    PA1     ------> TIM2_CH2 
+    */
+    GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1;
+ 8003412:      2303            movs    r3, #3
+ 8003414:      617b            str     r3, [r7, #20]
+    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
+ 8003416:      2302            movs    r3, #2
+ 8003418:      61bb            str     r3, [r7, #24]
+    GPIO_InitStruct.Pull = GPIO_NOPULL;
+ 800341a:      2300            movs    r3, #0
+ 800341c:      61fb            str     r3, [r7, #28]
+    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
+ 800341e:      2300            movs    r3, #0
+ 8003420:      623b            str     r3, [r7, #32]
+    GPIO_InitStruct.Alternate = GPIO_AF1_TIM2;
+ 8003422:      2301            movs    r3, #1
+ 8003424:      627b            str     r3, [r7, #36]   ; 0x24
+    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
+ 8003426:      f107 0314       add.w   r3, r7, #20
+ 800342a:      4619            mov     r1, r3
+ 800342c:      4804            ldr     r0, [pc, #16]   ; (8003440 <HAL_TIM_Encoder_MspInit+0x80>)
+ 800342e:      f7fd fcfd       bl      8000e2c <HAL_GPIO_Init>
+  /* USER CODE BEGIN TIM2_MspInit 1 */
+
+  /* USER CODE END TIM2_MspInit 1 */
+  }
+
+}
+ 8003432:      bf00            nop
+ 8003434:      3728            adds    r7, #40 ; 0x28
+ 8003436:      46bd            mov     sp, r7
+ 8003438:      bd80            pop     {r7, pc}
+ 800343a:      bf00            nop
+ 800343c:      40023800        .word   0x40023800
+ 8003440:      40020000        .word   0x40020000
+
+08003444 <HAL_UART_MspInit>:
 * This function configures the hardware resources used in this example
 * @param huart: UART handle pointer
 * @retval None
 */
 void HAL_UART_MspInit(UART_HandleTypeDef* huart)
 {
- 8002fcc:      b580            push    {r7, lr}
- 8002fce:      b08a            sub     sp, #40 ; 0x28
- 8002fd0:      af00            add     r7, sp, #0
- 8002fd2:      6078            str     r0, [r7, #4]
+ 8003444:      b580            push    {r7, lr}
+ 8003446:      b08a            sub     sp, #40 ; 0x28
+ 8003448:      af00            add     r7, sp, #0
+ 800344a:      6078            str     r0, [r7, #4]
   GPIO_InitTypeDef GPIO_InitStruct = {0};
- 8002fd4:      f107 0314       add.w   r3, r7, #20
- 8002fd8:      2200            movs    r2, #0
- 8002fda:      601a            str     r2, [r3, #0]
- 8002fdc:      605a            str     r2, [r3, #4]
- 8002fde:      609a            str     r2, [r3, #8]
- 8002fe0:      60da            str     r2, [r3, #12]
- 8002fe2:      611a            str     r2, [r3, #16]
+ 800344c:      f107 0314       add.w   r3, r7, #20
+ 8003450:      2200            movs    r2, #0
+ 8003452:      601a            str     r2, [r3, #0]
+ 8003454:      605a            str     r2, [r3, #4]
+ 8003456:      609a            str     r2, [r3, #8]
+ 8003458:      60da            str     r2, [r3, #12]
+ 800345a:      611a            str     r2, [r3, #16]
   if(huart->Instance==USART3)
- 8002fe4:      687b            ldr     r3, [r7, #4]
- 8002fe6:      681b            ldr     r3, [r3, #0]
- 8002fe8:      4a4b            ldr     r2, [pc, #300]  ; (8003118 <HAL_UART_MspInit+0x14c>)
- 8002fea:      4293            cmp     r3, r2
- 8002fec:      f040 808f       bne.w   800310e <HAL_UART_MspInit+0x142>
+ 800345c:      687b            ldr     r3, [r7, #4]
+ 800345e:      681b            ldr     r3, [r3, #0]
+ 8003460:      4a4b            ldr     r2, [pc, #300]  ; (8003590 <HAL_UART_MspInit+0x14c>)
+ 8003462:      4293            cmp     r3, r2
+ 8003464:      f040 808f       bne.w   8003586 <HAL_UART_MspInit+0x142>
   {
   /* USER CODE BEGIN USART3_MspInit 0 */
 
   /* USER CODE END USART3_MspInit 0 */
     /* Peripheral clock enable */
     __HAL_RCC_USART3_CLK_ENABLE();
- 8002ff0:      4b4a            ldr     r3, [pc, #296]  ; (800311c <HAL_UART_MspInit+0x150>)
- 8002ff2:      6c1b            ldr     r3, [r3, #64]   ; 0x40
- 8002ff4:      4a49            ldr     r2, [pc, #292]  ; (800311c <HAL_UART_MspInit+0x150>)
- 8002ff6:      f443 2380       orr.w   r3, r3, #262144 ; 0x40000
- 8002ffa:      6413            str     r3, [r2, #64]   ; 0x40
- 8002ffc:      4b47            ldr     r3, [pc, #284]  ; (800311c <HAL_UART_MspInit+0x150>)
- 8002ffe:      6c1b            ldr     r3, [r3, #64]   ; 0x40
- 8003000:      f403 2380       and.w   r3, r3, #262144 ; 0x40000
- 8003004:      613b            str     r3, [r7, #16]
- 8003006:      693b            ldr     r3, [r7, #16]
+ 8003468:      4b4a            ldr     r3, [pc, #296]  ; (8003594 <HAL_UART_MspInit+0x150>)
+ 800346a:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 800346c:      4a49            ldr     r2, [pc, #292]  ; (8003594 <HAL_UART_MspInit+0x150>)
+ 800346e:      f443 2380       orr.w   r3, r3, #262144 ; 0x40000
+ 8003472:      6413            str     r3, [r2, #64]   ; 0x40
+ 8003474:      4b47            ldr     r3, [pc, #284]  ; (8003594 <HAL_UART_MspInit+0x150>)
+ 8003476:      6c1b            ldr     r3, [r3, #64]   ; 0x40
+ 8003478:      f403 2380       and.w   r3, r3, #262144 ; 0x40000
+ 800347c:      613b            str     r3, [r7, #16]
+ 800347e:      693b            ldr     r3, [r7, #16]
   
     __HAL_RCC_GPIOD_CLK_ENABLE();
- 8003008:      4b44            ldr     r3, [pc, #272]  ; (800311c <HAL_UART_MspInit+0x150>)
- 800300a:      6b1b            ldr     r3, [r3, #48]   ; 0x30
- 800300c:      4a43            ldr     r2, [pc, #268]  ; (800311c <HAL_UART_MspInit+0x150>)
- 800300e:      f043 0308       orr.w   r3, r3, #8
- 8003012:      6313            str     r3, [r2, #48]   ; 0x30
- 8003014:      4b41            ldr     r3, [pc, #260]  ; (800311c <HAL_UART_MspInit+0x150>)
- 8003016:      6b1b            ldr     r3, [r3, #48]   ; 0x30
- 8003018:      f003 0308       and.w   r3, r3, #8
- 800301c:      60fb            str     r3, [r7, #12]
- 800301e:      68fb            ldr     r3, [r7, #12]
+ 8003480:      4b44            ldr     r3, [pc, #272]  ; (8003594 <HAL_UART_MspInit+0x150>)
+ 8003482:      6b1b            ldr     r3, [r3, #48]   ; 0x30
+ 8003484:      4a43            ldr     r2, [pc, #268]  ; (8003594 <HAL_UART_MspInit+0x150>)
+ 8003486:      f043 0308       orr.w   r3, r3, #8
+ 800348a:      6313            str     r3, [r2, #48]   ; 0x30
+ 800348c:      4b41            ldr     r3, [pc, #260]  ; (8003594 <HAL_UART_MspInit+0x150>)
+ 800348e:      6b1b            ldr     r3, [r3, #48]   ; 0x30
+ 8003490:      f003 0308       and.w   r3, r3, #8
+ 8003494:      60fb            str     r3, [r7, #12]
+ 8003496:      68fb            ldr     r3, [r7, #12]
     /**USART3 GPIO Configuration    
     PD8     ------> USART3_TX
     PD9     ------> USART3_RX 
     */
     GPIO_InitStruct.Pin = GPIO_PIN_8|GPIO_PIN_9;
- 8003020:      f44f 7340       mov.w   r3, #768        ; 0x300
- 8003024:      617b            str     r3, [r7, #20]
+ 8003498:      f44f 7340       mov.w   r3, #768        ; 0x300
+ 800349c:      617b            str     r3, [r7, #20]
     GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
- 8003026:      2302            movs    r3, #2
- 8003028:      61bb            str     r3, [r7, #24]
+ 800349e:      2302            movs    r3, #2
+ 80034a0:      61bb            str     r3, [r7, #24]
     GPIO_InitStruct.Pull = GPIO_NOPULL;
- 800302a:      2300            movs    r3, #0
- 800302c:      61fb            str     r3, [r7, #28]
+ 80034a2:      2300            movs    r3, #0
+ 80034a4:      61fb            str     r3, [r7, #28]
     GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
- 800302e:      2303            movs    r3, #3
- 8003030:      623b            str     r3, [r7, #32]
+ 80034a6:      2303            movs    r3, #3
+ 80034a8:      623b            str     r3, [r7, #32]
     GPIO_InitStruct.Alternate = GPIO_AF7_USART3;
- 8003032:      2307            movs    r3, #7
- 8003034:      627b            str     r3, [r7, #36]   ; 0x24
+ 80034aa:      2307            movs    r3, #7
+ 80034ac:      627b            str     r3, [r7, #36]   ; 0x24
     HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
- 8003036:      f107 0314       add.w   r3, r7, #20
- 800303a:      4619            mov     r1, r3
- 800303c:      4838            ldr     r0, [pc, #224]  ; (8003120 <HAL_UART_MspInit+0x154>)
- 800303e:      f7fd fef5       bl      8000e2c <HAL_GPIO_Init>
+ 80034ae:      f107 0314       add.w   r3, r7, #20
+ 80034b2:      4619            mov     r1, r3
+ 80034b4:      4838            ldr     r0, [pc, #224]  ; (8003598 <HAL_UART_MspInit+0x154>)
+ 80034b6:      f7fd fcb9       bl      8000e2c <HAL_GPIO_Init>
 
     /* USART3 DMA Init */
     /* USART3_RX Init */
     hdma_usart3_rx.Instance = DMA1_Stream1;
- 8003042:      4b38            ldr     r3, [pc, #224]  ; (8003124 <HAL_UART_MspInit+0x158>)
- 8003044:      4a38            ldr     r2, [pc, #224]  ; (8003128 <HAL_UART_MspInit+0x15c>)
- 8003046:      601a            str     r2, [r3, #0]
+ 80034ba:      4b38            ldr     r3, [pc, #224]  ; (800359c <HAL_UART_MspInit+0x158>)
+ 80034bc:      4a38            ldr     r2, [pc, #224]  ; (80035a0 <HAL_UART_MspInit+0x15c>)
+ 80034be:      601a            str     r2, [r3, #0]
     hdma_usart3_rx.Init.Channel = DMA_CHANNEL_4;
- 8003048:      4b36            ldr     r3, [pc, #216]  ; (8003124 <HAL_UART_MspInit+0x158>)
- 800304a:      f04f 6200       mov.w   r2, #134217728  ; 0x8000000
- 800304e:      605a            str     r2, [r3, #4]
+ 80034c0:      4b36            ldr     r3, [pc, #216]  ; (800359c <HAL_UART_MspInit+0x158>)
+ 80034c2:      f04f 6200       mov.w   r2, #134217728  ; 0x8000000
+ 80034c6:      605a            str     r2, [r3, #4]
     hdma_usart3_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
- 8003050:      4b34            ldr     r3, [pc, #208]  ; (8003124 <HAL_UART_MspInit+0x158>)
- 8003052:      2200            movs    r2, #0
- 8003054:      609a            str     r2, [r3, #8]
+ 80034c8:      4b34            ldr     r3, [pc, #208]  ; (800359c <HAL_UART_MspInit+0x158>)
+ 80034ca:      2200            movs    r2, #0
+ 80034cc:      609a            str     r2, [r3, #8]
     hdma_usart3_rx.Init.PeriphInc = DMA_PINC_DISABLE;
- 8003056:      4b33            ldr     r3, [pc, #204]  ; (8003124 <HAL_UART_MspInit+0x158>)
- 8003058:      2200            movs    r2, #0
- 800305a:      60da            str     r2, [r3, #12]
+ 80034ce:      4b33            ldr     r3, [pc, #204]  ; (800359c <HAL_UART_MspInit+0x158>)
+ 80034d0:      2200            movs    r2, #0
+ 80034d2:      60da            str     r2, [r3, #12]
     hdma_usart3_rx.Init.MemInc = DMA_MINC_ENABLE;
- 800305c:      4b31            ldr     r3, [pc, #196]  ; (8003124 <HAL_UART_MspInit+0x158>)
- 800305e:      f44f 6280       mov.w   r2, #1024       ; 0x400
- 8003062:      611a            str     r2, [r3, #16]
+ 80034d4:      4b31            ldr     r3, [pc, #196]  ; (800359c <HAL_UART_MspInit+0x158>)
+ 80034d6:      f44f 6280       mov.w   r2, #1024       ; 0x400
+ 80034da:      611a            str     r2, [r3, #16]
     hdma_usart3_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
- 8003064:      4b2f            ldr     r3, [pc, #188]  ; (8003124 <HAL_UART_MspInit+0x158>)
- 8003066:      2200            movs    r2, #0
- 8003068:      615a            str     r2, [r3, #20]
+ 80034dc:      4b2f            ldr     r3, [pc, #188]  ; (800359c <HAL_UART_MspInit+0x158>)
+ 80034de:      2200            movs    r2, #0
+ 80034e0:      615a            str     r2, [r3, #20]
     hdma_usart3_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
- 800306a:      4b2e            ldr     r3, [pc, #184]  ; (8003124 <HAL_UART_MspInit+0x158>)
- 800306c:      2200            movs    r2, #0
- 800306e:      619a            str     r2, [r3, #24]
+ 80034e2:      4b2e            ldr     r3, [pc, #184]  ; (800359c <HAL_UART_MspInit+0x158>)
+ 80034e4:      2200            movs    r2, #0
+ 80034e6:      619a            str     r2, [r3, #24]
     hdma_usart3_rx.Init.Mode = DMA_NORMAL;
- 8003070:      4b2c            ldr     r3, [pc, #176]  ; (8003124 <HAL_UART_MspInit+0x158>)
- 8003072:      2200            movs    r2, #0
- 8003074:      61da            str     r2, [r3, #28]
+ 80034e8:      4b2c            ldr     r3, [pc, #176]  ; (800359c <HAL_UART_MspInit+0x158>)
+ 80034ea:      2200            movs    r2, #0
+ 80034ec:      61da            str     r2, [r3, #28]
     hdma_usart3_rx.Init.Priority = DMA_PRIORITY_HIGH;
- 8003076:      4b2b            ldr     r3, [pc, #172]  ; (8003124 <HAL_UART_MspInit+0x158>)
- 8003078:      f44f 3200       mov.w   r2, #131072     ; 0x20000
- 800307c:      621a            str     r2, [r3, #32]
+ 80034ee:      4b2b            ldr     r3, [pc, #172]  ; (800359c <HAL_UART_MspInit+0x158>)
+ 80034f0:      f44f 3200       mov.w   r2, #131072     ; 0x20000
+ 80034f4:      621a            str     r2, [r3, #32]
     hdma_usart3_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
- 800307e:      4b29            ldr     r3, [pc, #164]  ; (8003124 <HAL_UART_MspInit+0x158>)
- 8003080:      2200            movs    r2, #0
- 8003082:      625a            str     r2, [r3, #36]   ; 0x24
+ 80034f6:      4b29            ldr     r3, [pc, #164]  ; (800359c <HAL_UART_MspInit+0x158>)
+ 80034f8:      2200            movs    r2, #0
+ 80034fa:      625a            str     r2, [r3, #36]   ; 0x24
     if (HAL_DMA_Init(&hdma_usart3_rx) != HAL_OK)
- 8003084:      4827            ldr     r0, [pc, #156]  ; (8003124 <HAL_UART_MspInit+0x158>)
- 8003086:      f7fd fbc7       bl      8000818 <HAL_DMA_Init>
- 800308a:      4603            mov     r3, r0
- 800308c:      2b00            cmp     r3, #0
- 800308e:      d001            beq.n   8003094 <HAL_UART_MspInit+0xc8>
+ 80034fc:      4827            ldr     r0, [pc, #156]  ; (800359c <HAL_UART_MspInit+0x158>)
+ 80034fe:      f7fd f98b       bl      8000818 <HAL_DMA_Init>
+ 8003502:      4603            mov     r3, r0
+ 8003504:      2b00            cmp     r3, #0
+ 8003506:      d001            beq.n   800350c <HAL_UART_MspInit+0xc8>
     {
       Error_Handler();
- 8003090:      f7ff ff70       bl      8002f74 <Error_Handler>
+ 8003508:      f7ff ff2e       bl      8003368 <Error_Handler>
     }
 
     __HAL_LINKDMA(huart,hdmarx,hdma_usart3_rx);
- 8003094:      687b            ldr     r3, [r7, #4]
- 8003096:      4a23            ldr     r2, [pc, #140]  ; (8003124 <HAL_UART_MspInit+0x158>)
- 8003098:      66da            str     r2, [r3, #108]  ; 0x6c
- 800309a:      4a22            ldr     r2, [pc, #136]  ; (8003124 <HAL_UART_MspInit+0x158>)
- 800309c:      687b            ldr     r3, [r7, #4]
- 800309e:      6393            str     r3, [r2, #56]   ; 0x38
+ 800350c:      687b            ldr     r3, [r7, #4]
+ 800350e:      4a23            ldr     r2, [pc, #140]  ; (800359c <HAL_UART_MspInit+0x158>)
+ 8003510:      66da            str     r2, [r3, #108]  ; 0x6c
+ 8003512:      4a22            ldr     r2, [pc, #136]  ; (800359c <HAL_UART_MspInit+0x158>)
+ 8003514:      687b            ldr     r3, [r7, #4]
+ 8003516:      6393            str     r3, [r2, #56]   ; 0x38
 
     /* USART3_TX Init */
     hdma_usart3_tx.Instance = DMA1_Stream3;
- 80030a0:      4b22            ldr     r3, [pc, #136]  ; (800312c <HAL_UART_MspInit+0x160>)
- 80030a2:      4a23            ldr     r2, [pc, #140]  ; (8003130 <HAL_UART_MspInit+0x164>)
- 80030a4:      601a            str     r2, [r3, #0]
+ 8003518:      4b22            ldr     r3, [pc, #136]  ; (80035a4 <HAL_UART_MspInit+0x160>)
+ 800351a:      4a23            ldr     r2, [pc, #140]  ; (80035a8 <HAL_UART_MspInit+0x164>)
+ 800351c:      601a            str     r2, [r3, #0]
     hdma_usart3_tx.Init.Channel = DMA_CHANNEL_4;
- 80030a6:      4b21            ldr     r3, [pc, #132]  ; (800312c <HAL_UART_MspInit+0x160>)
- 80030a8:      f04f 6200       mov.w   r2, #134217728  ; 0x8000000
- 80030ac:      605a            str     r2, [r3, #4]
+ 800351e:      4b21            ldr     r3, [pc, #132]  ; (80035a4 <HAL_UART_MspInit+0x160>)
+ 8003520:      f04f 6200       mov.w   r2, #134217728  ; 0x8000000
+ 8003524:      605a            str     r2, [r3, #4]
     hdma_usart3_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
- 80030ae:      4b1f            ldr     r3, [pc, #124]  ; (800312c <HAL_UART_MspInit+0x160>)
- 80030b0:      2240            movs    r2, #64 ; 0x40
- 80030b2:      609a            str     r2, [r3, #8]
+ 8003526:      4b1f            ldr     r3, [pc, #124]  ; (80035a4 <HAL_UART_MspInit+0x160>)
+ 8003528:      2240            movs    r2, #64 ; 0x40
+ 800352a:      609a            str     r2, [r3, #8]
     hdma_usart3_tx.Init.PeriphInc = DMA_PINC_DISABLE;
- 80030b4:      4b1d            ldr     r3, [pc, #116]  ; (800312c <HAL_UART_MspInit+0x160>)
- 80030b6:      2200            movs    r2, #0
- 80030b8:      60da            str     r2, [r3, #12]
+ 800352c:      4b1d            ldr     r3, [pc, #116]  ; (80035a4 <HAL_UART_MspInit+0x160>)
+ 800352e:      2200            movs    r2, #0
+ 8003530:      60da            str     r2, [r3, #12]
     hdma_usart3_tx.Init.MemInc = DMA_MINC_ENABLE;
- 80030ba:      4b1c            ldr     r3, [pc, #112]  ; (800312c <HAL_UART_MspInit+0x160>)
- 80030bc:      f44f 6280       mov.w   r2, #1024       ; 0x400
- 80030c0:      611a            str     r2, [r3, #16]
+ 8003532:      4b1c            ldr     r3, [pc, #112]  ; (80035a4 <HAL_UART_MspInit+0x160>)
+ 8003534:      f44f 6280       mov.w   r2, #1024       ; 0x400
+ 8003538:      611a            str     r2, [r3, #16]
     hdma_usart3_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
- 80030c2:      4b1a            ldr     r3, [pc, #104]  ; (800312c <HAL_UART_MspInit+0x160>)
- 80030c4:      2200            movs    r2, #0
- 80030c6:      615a            str     r2, [r3, #20]
+ 800353a:      4b1a            ldr     r3, [pc, #104]  ; (80035a4 <HAL_UART_MspInit+0x160>)
+ 800353c:      2200            movs    r2, #0
+ 800353e:      615a            str     r2, [r3, #20]
     hdma_usart3_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
- 80030c8:      4b18            ldr     r3, [pc, #96]   ; (800312c <HAL_UART_MspInit+0x160>)
- 80030ca:      2200            movs    r2, #0
- 80030cc:      619a            str     r2, [r3, #24]
+ 8003540:      4b18            ldr     r3, [pc, #96]   ; (80035a4 <HAL_UART_MspInit+0x160>)
+ 8003542:      2200            movs    r2, #0
+ 8003544:      619a            str     r2, [r3, #24]
     hdma_usart3_tx.Init.Mode = DMA_NORMAL;
- 80030ce:      4b17            ldr     r3, [pc, #92]   ; (800312c <HAL_UART_MspInit+0x160>)
- 80030d0:      2200            movs    r2, #0
- 80030d2:      61da            str     r2, [r3, #28]
+ 8003546:      4b17            ldr     r3, [pc, #92]   ; (80035a4 <HAL_UART_MspInit+0x160>)
+ 8003548:      2200            movs    r2, #0
+ 800354a:      61da            str     r2, [r3, #28]
     hdma_usart3_tx.Init.Priority = DMA_PRIORITY_HIGH;
- 80030d4:      4b15            ldr     r3, [pc, #84]   ; (800312c <HAL_UART_MspInit+0x160>)
- 80030d6:      f44f 3200       mov.w   r2, #131072     ; 0x20000
- 80030da:      621a            str     r2, [r3, #32]
+ 800354c:      4b15            ldr     r3, [pc, #84]   ; (80035a4 <HAL_UART_MspInit+0x160>)
+ 800354e:      f44f 3200       mov.w   r2, #131072     ; 0x20000
+ 8003552:      621a            str     r2, [r3, #32]
     hdma_usart3_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
- 80030dc:      4b13            ldr     r3, [pc, #76]   ; (800312c <HAL_UART_MspInit+0x160>)
- 80030de:      2200            movs    r2, #0
- 80030e0:      625a            str     r2, [r3, #36]   ; 0x24
+ 8003554:      4b13            ldr     r3, [pc, #76]   ; (80035a4 <HAL_UART_MspInit+0x160>)
+ 8003556:      2200            movs    r2, #0
+ 8003558:      625a            str     r2, [r3, #36]   ; 0x24
     if (HAL_DMA_Init(&hdma_usart3_tx) != HAL_OK)
- 80030e2:      4812            ldr     r0, [pc, #72]   ; (800312c <HAL_UART_MspInit+0x160>)
- 80030e4:      f7fd fb98       bl      8000818 <HAL_DMA_Init>
- 80030e8:      4603            mov     r3, r0
- 80030ea:      2b00            cmp     r3, #0
- 80030ec:      d001            beq.n   80030f2 <HAL_UART_MspInit+0x126>
+ 800355a:      4812            ldr     r0, [pc, #72]   ; (80035a4 <HAL_UART_MspInit+0x160>)
+ 800355c:      f7fd f95c       bl      8000818 <HAL_DMA_Init>
+ 8003560:      4603            mov     r3, r0
+ 8003562:      2b00            cmp     r3, #0
+ 8003564:      d001            beq.n   800356a <HAL_UART_MspInit+0x126>
     {
       Error_Handler();
- 80030ee:      f7ff ff41       bl      8002f74 <Error_Handler>
+ 8003566:      f7ff feff       bl      8003368 <Error_Handler>
     }
 
     __HAL_LINKDMA(huart,hdmatx,hdma_usart3_tx);
- 80030f2:      687b            ldr     r3, [r7, #4]
- 80030f4:      4a0d            ldr     r2, [pc, #52]   ; (800312c <HAL_UART_MspInit+0x160>)
- 80030f6:      669a            str     r2, [r3, #104]  ; 0x68
- 80030f8:      4a0c            ldr     r2, [pc, #48]   ; (800312c <HAL_UART_MspInit+0x160>)
- 80030fa:      687b            ldr     r3, [r7, #4]
- 80030fc:      6393            str     r3, [r2, #56]   ; 0x38
+ 800356a:      687b            ldr     r3, [r7, #4]
+ 800356c:      4a0d            ldr     r2, [pc, #52]   ; (80035a4 <HAL_UART_MspInit+0x160>)
+ 800356e:      669a            str     r2, [r3, #104]  ; 0x68
+ 8003570:      4a0c            ldr     r2, [pc, #48]   ; (80035a4 <HAL_UART_MspInit+0x160>)
+ 8003572:      687b            ldr     r3, [r7, #4]
+ 8003574:      6393            str     r3, [r2, #56]   ; 0x38
 
     /* USART3 interrupt Init */
     HAL_NVIC_SetPriority(USART3_IRQn, 0, 0);
- 80030fe:      2200            movs    r2, #0
- 8003100:      2100            movs    r1, #0
- 8003102:      2027            movs    r0, #39 ; 0x27
- 8003104:      f7fd fb51       bl      80007aa <HAL_NVIC_SetPriority>
+ 8003576:      2200            movs    r2, #0
+ 8003578:      2100            movs    r1, #0
+ 800357a:      2027            movs    r0, #39 ; 0x27
+ 800357c:      f7fd f915       bl      80007aa <HAL_NVIC_SetPriority>
     HAL_NVIC_EnableIRQ(USART3_IRQn);
- 8003108:      2027            movs    r0, #39 ; 0x27
- 800310a:      f7fd fb6a       bl      80007e2 <HAL_NVIC_EnableIRQ>
+ 8003580:      2027            movs    r0, #39 ; 0x27
+ 8003582:      f7fd f92e       bl      80007e2 <HAL_NVIC_EnableIRQ>
   /* USER CODE BEGIN USART3_MspInit 1 */
 
   /* USER CODE END USART3_MspInit 1 */
   }
 
 }
- 800310e:      bf00            nop
- 8003110:      3728            adds    r7, #40 ; 0x28
- 8003112:      46bd            mov     sp, r7
- 8003114:      bd80            pop     {r7, pc}
- 8003116:      bf00            nop
- 8003118:      40004800        .word   0x40004800
- 800311c:      40023800        .word   0x40023800
- 8003120:      40020c00        .word   0x40020c00
- 8003124:      200000a8        .word   0x200000a8
- 8003128:      40026028        .word   0x40026028
- 800312c:      20000108        .word   0x20000108
- 8003130:      40026058        .word   0x40026058
-
-08003134 <NMI_Handler>:
+ 8003586:      bf00            nop
+ 8003588:      3728            adds    r7, #40 ; 0x28
+ 800358a:      46bd            mov     sp, r7
+ 800358c:      bd80            pop     {r7, pc}
+ 800358e:      bf00            nop
+ 8003590:      40004800        .word   0x40004800
+ 8003594:      40023800        .word   0x40023800
+ 8003598:      40020c00        .word   0x40020c00
+ 800359c:      200000e8        .word   0x200000e8
+ 80035a0:      40026028        .word   0x40026028
+ 80035a4:      20000148        .word   0x20000148
+ 80035a8:      40026058        .word   0x40026058
+
+080035ac <NMI_Handler>:
 /******************************************************************************/
 /**
   * @brief This function handles Non maskable interrupt.
   */
 void NMI_Handler(void)
 {
- 8003134:      b480            push    {r7}
- 8003136:      af00            add     r7, sp, #0
+ 80035ac:      b480            push    {r7}
+ 80035ae:      af00            add     r7, sp, #0
 
   /* USER CODE END NonMaskableInt_IRQn 0 */
   /* USER CODE BEGIN NonMaskableInt_IRQn 1 */
 
   /* USER CODE END NonMaskableInt_IRQn 1 */
 }
- 8003138:      bf00            nop
- 800313a:      46bd            mov     sp, r7
- 800313c:      f85d 7b04       ldr.w   r7, [sp], #4
- 8003140:      4770            bx      lr
+ 80035b0:      bf00            nop
+ 80035b2:      46bd            mov     sp, r7
+ 80035b4:      f85d 7b04       ldr.w   r7, [sp], #4
+ 80035b8:      4770            bx      lr
 
-08003142 <HardFault_Handler>:
+080035ba <HardFault_Handler>:
 
 /**
   * @brief This function handles Hard fault interrupt.
   */
 void HardFault_Handler(void)
 {
- 8003142:      b480            push    {r7}
- 8003144:      af00            add     r7, sp, #0
+ 80035ba:      b480            push    {r7}
+ 80035bc:      af00            add     r7, sp, #0
   /* USER CODE BEGIN HardFault_IRQn 0 */
 
   /* USER CODE END HardFault_IRQn 0 */
   while (1)
- 8003146:      e7fe            b.n     8003146 <HardFault_Handler+0x4>
+ 80035be:      e7fe            b.n     80035be <HardFault_Handler+0x4>
 
-08003148 <MemManage_Handler>:
+080035c0 <MemManage_Handler>:
 
 /**
   * @brief This function handles Memory management fault.
   */
 void MemManage_Handler(void)
 {
- 8003148:      b480            push    {r7}
- 800314a:      af00            add     r7, sp, #0
+ 80035c0:      b480            push    {r7}
+ 80035c2:      af00            add     r7, sp, #0
   /* USER CODE BEGIN MemoryManagement_IRQn 0 */
 
   /* USER CODE END MemoryManagement_IRQn 0 */
   while (1)
- 800314c:      e7fe            b.n     800314c <MemManage_Handler+0x4>
+ 80035c4:      e7fe            b.n     80035c4 <MemManage_Handler+0x4>
 
-0800314e <BusFault_Handler>:
+080035c6 <BusFault_Handler>:
 
 /**
   * @brief This function handles Pre-fetch fault, memory access fault.
   */
 void BusFault_Handler(void)
 {
- 800314e:      b480            push    {r7}
- 8003150:      af00            add     r7, sp, #0
+ 80035c6:      b480            push    {r7}
+ 80035c8:      af00            add     r7, sp, #0
   /* USER CODE BEGIN BusFault_IRQn 0 */
 
   /* USER CODE END BusFault_IRQn 0 */
   while (1)
- 8003152:      e7fe            b.n     8003152 <BusFault_Handler+0x4>
+ 80035ca:      e7fe            b.n     80035ca <BusFault_Handler+0x4>
 
-08003154 <UsageFault_Handler>:
+080035cc <UsageFault_Handler>:
 
 /**
   * @brief This function handles Undefined instruction or illegal state.
   */
 void UsageFault_Handler(void)
 {
- 8003154:      b480            push    {r7}
- 8003156:      af00            add     r7, sp, #0
+ 80035cc:      b480            push    {r7}
+ 80035ce:      af00            add     r7, sp, #0
   /* USER CODE BEGIN UsageFault_IRQn 0 */
 
   /* USER CODE END UsageFault_IRQn 0 */
   while (1)
- 8003158:      e7fe            b.n     8003158 <UsageFault_Handler+0x4>
+ 80035d0:      e7fe            b.n     80035d0 <UsageFault_Handler+0x4>
 
-0800315a <SVC_Handler>:
+080035d2 <SVC_Handler>:
 
 /**
   * @brief This function handles System service call via SWI instruction.
   */
 void SVC_Handler(void)
 {
- 800315a:      b480            push    {r7}
- 800315c:      af00            add     r7, sp, #0
+ 80035d2:      b480            push    {r7}
+ 80035d4:      af00            add     r7, sp, #0
 
   /* USER CODE END SVCall_IRQn 0 */
   /* USER CODE BEGIN SVCall_IRQn 1 */
 
   /* USER CODE END SVCall_IRQn 1 */
 }
- 800315e:      bf00            nop
- 8003160:      46bd            mov     sp, r7
- 8003162:      f85d 7b04       ldr.w   r7, [sp], #4
- 8003166:      4770            bx      lr
+ 80035d6:      bf00            nop
+ 80035d8:      46bd            mov     sp, r7
+ 80035da:      f85d 7b04       ldr.w   r7, [sp], #4
+ 80035de:      4770            bx      lr
 
-08003168 <DebugMon_Handler>:
+080035e0 <DebugMon_Handler>:
 
 /**
   * @brief This function handles Debug monitor.
   */
 void DebugMon_Handler(void)
 {
- 8003168:      b480            push    {r7}
- 800316a:      af00            add     r7, sp, #0
+ 80035e0:      b480            push    {r7}
+ 80035e2:      af00            add     r7, sp, #0
 
   /* USER CODE END DebugMonitor_IRQn 0 */
   /* USER CODE BEGIN DebugMonitor_IRQn 1 */
 
   /* USER CODE END DebugMonitor_IRQn 1 */
 }
- 800316c:      bf00            nop
- 800316e:      46bd            mov     sp, r7
- 8003170:      f85d 7b04       ldr.w   r7, [sp], #4
- 8003174:      4770            bx      lr
+ 80035e4:      bf00            nop
+ 80035e6:      46bd            mov     sp, r7
+ 80035e8:      f85d 7b04       ldr.w   r7, [sp], #4
+ 80035ec:      4770            bx      lr
 
-08003176 <PendSV_Handler>:
+080035ee <PendSV_Handler>:
 
 /**
   * @brief This function handles Pendable request for system service.
   */
 void PendSV_Handler(void)
 {
- 8003176:      b480            push    {r7}
- 8003178:      af00            add     r7, sp, #0
+ 80035ee:      b480            push    {r7}
+ 80035f0:      af00            add     r7, sp, #0
 
   /* USER CODE END PendSV_IRQn 0 */
   /* USER CODE BEGIN PendSV_IRQn 1 */
 
   /* USER CODE END PendSV_IRQn 1 */
 }
- 800317a:      bf00            nop
- 800317c:      46bd            mov     sp, r7
- 800317e:      f85d 7b04       ldr.w   r7, [sp], #4
- 8003182:      4770            bx      lr
+ 80035f2:      bf00            nop
+ 80035f4:      46bd            mov     sp, r7
+ 80035f6:      f85d 7b04       ldr.w   r7, [sp], #4
+ 80035fa:      4770            bx      lr
 
-08003184 <SysTick_Handler>:
+080035fc <SysTick_Handler>:
 
 /**
   * @brief This function handles System tick timer.
   */
 void SysTick_Handler(void)
 {
- 8003184:      b580            push    {r7, lr}
- 8003186:      af00            add     r7, sp, #0
+ 80035fc:      b580            push    {r7, lr}
+ 80035fe:      af00            add     r7, sp, #0
   /* USER CODE BEGIN SysTick_IRQn 0 */
 
   /* USER CODE END SysTick_IRQn 0 */
   HAL_IncTick();
- 8003188:      f7fd fa14       bl      80005b4 <HAL_IncTick>
+ 8003600:      f7fc ffd8       bl      80005b4 <HAL_IncTick>
   /* USER CODE BEGIN SysTick_IRQn 1 */
 
   /* USER CODE END SysTick_IRQn 1 */
 }
- 800318c:      bf00            nop
- 800318e:      bd80            pop     {r7, pc}
+ 8003604:      bf00            nop
+ 8003606:      bd80            pop     {r7, pc}
 
-08003190 <DMA1_Stream1_IRQHandler>:
+08003608 <DMA1_Stream1_IRQHandler>:
 
 /**
   * @brief This function handles DMA1 stream1 global interrupt.
   */
 void DMA1_Stream1_IRQHandler(void)
 {
- 8003190:      b580            push    {r7, lr}
- 8003192:      af00            add     r7, sp, #0
+ 8003608:      b580            push    {r7, lr}
+ 800360a:      af00            add     r7, sp, #0
   /* USER CODE BEGIN DMA1_Stream1_IRQn 0 */
 
   /* USER CODE END DMA1_Stream1_IRQn 0 */
   HAL_DMA_IRQHandler(&hdma_usart3_rx);
- 8003194:      4802            ldr     r0, [pc, #8]    ; (80031a0 <DMA1_Stream1_IRQHandler+0x10>)
- 8003196:      f7fd fc0f       bl      80009b8 <HAL_DMA_IRQHandler>
+ 800360c:      4802            ldr     r0, [pc, #8]    ; (8003618 <DMA1_Stream1_IRQHandler+0x10>)
+ 800360e:      f7fd f9d3       bl      80009b8 <HAL_DMA_IRQHandler>
   /* USER CODE BEGIN DMA1_Stream1_IRQn 1 */
 
   /* USER CODE END DMA1_Stream1_IRQn 1 */
 }
- 800319a:      bf00            nop
- 800319c:      bd80            pop     {r7, pc}
- 800319e:      bf00            nop
- 80031a0:      200000a8        .word   0x200000a8
+ 8003612:      bf00            nop
+ 8003614:      bd80            pop     {r7, pc}
+ 8003616:      bf00            nop
+ 8003618:      200000e8        .word   0x200000e8
 
-080031a4 <DMA1_Stream3_IRQHandler>:
+0800361c <DMA1_Stream3_IRQHandler>:
 
 /**
   * @brief This function handles DMA1 stream3 global interrupt.
   */
 void DMA1_Stream3_IRQHandler(void)
 {
- 80031a4:      b580            push    {r7, lr}
- 80031a6:      af00            add     r7, sp, #0
+ 800361c:      b580            push    {r7, lr}
+ 800361e:      af00            add     r7, sp, #0
   /* USER CODE BEGIN DMA1_Stream3_IRQn 0 */
 
   /* USER CODE END DMA1_Stream3_IRQn 0 */
   HAL_DMA_IRQHandler(&hdma_usart3_tx);
- 80031a8:      4802            ldr     r0, [pc, #8]    ; (80031b4 <DMA1_Stream3_IRQHandler+0x10>)
- 80031aa:      f7fd fc05       bl      80009b8 <HAL_DMA_IRQHandler>
+ 8003620:      4802            ldr     r0, [pc, #8]    ; (800362c <DMA1_Stream3_IRQHandler+0x10>)
+ 8003622:      f7fd f9c9       bl      80009b8 <HAL_DMA_IRQHandler>
   /* USER CODE BEGIN DMA1_Stream3_IRQn 1 */
 
   /* USER CODE END DMA1_Stream3_IRQn 1 */
 }
- 80031ae:      bf00            nop
- 80031b0:      bd80            pop     {r7, pc}
- 80031b2:      bf00            nop
- 80031b4:      20000108        .word   0x20000108
+ 8003626:      bf00            nop
+ 8003628:      bd80            pop     {r7, pc}
+ 800362a:      bf00            nop
+ 800362c:      20000148        .word   0x20000148
 
-080031b8 <USART3_IRQHandler>:
+08003630 <USART3_IRQHandler>:
 
 /**
   * @brief This function handles USART3 global interrupt.
   */
 void USART3_IRQHandler(void)
 {
- 80031b8:      b580            push    {r7, lr}
- 80031ba:      af00            add     r7, sp, #0
+ 8003630:      b580            push    {r7, lr}
+ 8003632:      af00            add     r7, sp, #0
   /* USER CODE BEGIN USART3_IRQn 0 */
 
   /* USER CODE END USART3_IRQn 0 */
   HAL_UART_IRQHandler(&huart3);
- 80031bc:      4802            ldr     r0, [pc, #8]    ; (80031c8 <USART3_IRQHandler+0x10>)
- 80031be:      f7ff f893       bl      80022e8 <HAL_UART_IRQHandler>
+ 8003634:      4802            ldr     r0, [pc, #8]    ; (8003640 <USART3_IRQHandler+0x10>)
+ 8003636:      f7fe ffe5       bl      8002604 <HAL_UART_IRQHandler>
   /* USER CODE BEGIN USART3_IRQn 1 */
 
   /* USER CODE END USART3_IRQn 1 */
 }
- 80031c2:      bf00            nop
- 80031c4:      bd80            pop     {r7, pc}
- 80031c6:      bf00            nop
- 80031c8:      20000028        .word   0x20000028
+ 800363a:      bf00            nop
+ 800363c:      bd80            pop     {r7, pc}
+ 800363e:      bf00            nop
+ 8003640:      20000068        .word   0x20000068
 
-080031cc <SystemInit>:
+08003644 <SystemInit>:
   *         SystemFrequency variable.
   * @param  None
   * @retval None
   */
 void SystemInit(void)
 {
- 80031cc:      b480            push    {r7}
- 80031ce:      af00            add     r7, sp, #0
+ 8003644:      b480            push    {r7}
+ 8003646:      af00            add     r7, sp, #0
   /* FPU settings ------------------------------------------------------------*/
   #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
     SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2));  /* set CP10 and CP11 Full Access */
- 80031d0:      4b15            ldr     r3, [pc, #84]   ; (8003228 <SystemInit+0x5c>)
- 80031d2:      f8d3 3088       ldr.w   r3, [r3, #136]  ; 0x88
- 80031d6:      4a14            ldr     r2, [pc, #80]   ; (8003228 <SystemInit+0x5c>)
- 80031d8:      f443 0370       orr.w   r3, r3, #15728640       ; 0xf00000
- 80031dc:      f8c2 3088       str.w   r3, [r2, #136]  ; 0x88
+ 8003648:      4b15            ldr     r3, [pc, #84]   ; (80036a0 <SystemInit+0x5c>)
+ 800364a:      f8d3 3088       ldr.w   r3, [r3, #136]  ; 0x88
+ 800364e:      4a14            ldr     r2, [pc, #80]   ; (80036a0 <SystemInit+0x5c>)
+ 8003650:      f443 0370       orr.w   r3, r3, #15728640       ; 0xf00000
+ 8003654:      f8c2 3088       str.w   r3, [r2, #136]  ; 0x88
   #endif
   /* Reset the RCC clock configuration to the default reset state ------------*/
   /* Set HSION bit */
   RCC->CR |= (uint32_t)0x00000001;
- 80031e0:      4b12            ldr     r3, [pc, #72]   ; (800322c <SystemInit+0x60>)
- 80031e2:      681b            ldr     r3, [r3, #0]
- 80031e4:      4a11            ldr     r2, [pc, #68]   ; (800322c <SystemInit+0x60>)
- 80031e6:      f043 0301       orr.w   r3, r3, #1
- 80031ea:      6013            str     r3, [r2, #0]
+ 8003658:      4b12            ldr     r3, [pc, #72]   ; (80036a4 <SystemInit+0x60>)
+ 800365a:      681b            ldr     r3, [r3, #0]
+ 800365c:      4a11            ldr     r2, [pc, #68]   ; (80036a4 <SystemInit+0x60>)
+ 800365e:      f043 0301       orr.w   r3, r3, #1
+ 8003662:      6013            str     r3, [r2, #0]
 
   /* Reset CFGR register */
   RCC->CFGR = 0x00000000;
- 80031ec:      4b0f            ldr     r3, [pc, #60]   ; (800322c <SystemInit+0x60>)
- 80031ee:      2200            movs    r2, #0
- 80031f0:      609a            str     r2, [r3, #8]
+ 8003664:      4b0f            ldr     r3, [pc, #60]   ; (80036a4 <SystemInit+0x60>)
+ 8003666:      2200            movs    r2, #0
+ 8003668:      609a            str     r2, [r3, #8]
 
   /* Reset HSEON, CSSON and PLLON bits */
   RCC->CR &= (uint32_t)0xFEF6FFFF;
- 80031f2:      4b0e            ldr     r3, [pc, #56]   ; (800322c <SystemInit+0x60>)
- 80031f4:      681a            ldr     r2, [r3, #0]
- 80031f6:      490d            ldr     r1, [pc, #52]   ; (800322c <SystemInit+0x60>)
- 80031f8:      4b0d            ldr     r3, [pc, #52]   ; (8003230 <SystemInit+0x64>)
- 80031fa:      4013            ands    r3, r2
- 80031fc:      600b            str     r3, [r1, #0]
+ 800366a:      4b0e            ldr     r3, [pc, #56]   ; (80036a4 <SystemInit+0x60>)
+ 800366c:      681a            ldr     r2, [r3, #0]
+ 800366e:      490d            ldr     r1, [pc, #52]   ; (80036a4 <SystemInit+0x60>)
+ 8003670:      4b0d            ldr     r3, [pc, #52]   ; (80036a8 <SystemInit+0x64>)
+ 8003672:      4013            ands    r3, r2
+ 8003674:      600b            str     r3, [r1, #0]
 
   /* Reset PLLCFGR register */
   RCC->PLLCFGR = 0x24003010;
- 80031fe:      4b0b            ldr     r3, [pc, #44]   ; (800322c <SystemInit+0x60>)
- 8003200:      4a0c            ldr     r2, [pc, #48]   ; (8003234 <SystemInit+0x68>)
- 8003202:      605a            str     r2, [r3, #4]
+ 8003676:      4b0b            ldr     r3, [pc, #44]   ; (80036a4 <SystemInit+0x60>)
+ 8003678:      4a0c            ldr     r2, [pc, #48]   ; (80036ac <SystemInit+0x68>)
+ 800367a:      605a            str     r2, [r3, #4]
 
   /* Reset HSEBYP bit */
   RCC->CR &= (uint32_t)0xFFFBFFFF;
- 8003204:      4b09            ldr     r3, [pc, #36]   ; (800322c <SystemInit+0x60>)
- 8003206:      681b            ldr     r3, [r3, #0]
- 8003208:      4a08            ldr     r2, [pc, #32]   ; (800322c <SystemInit+0x60>)
- 800320a:      f423 2380       bic.w   r3, r3, #262144 ; 0x40000
- 800320e:      6013            str     r3, [r2, #0]
+ 800367c:      4b09            ldr     r3, [pc, #36]   ; (80036a4 <SystemInit+0x60>)
+ 800367e:      681b            ldr     r3, [r3, #0]
+ 8003680:      4a08            ldr     r2, [pc, #32]   ; (80036a4 <SystemInit+0x60>)
+ 8003682:      f423 2380       bic.w   r3, r3, #262144 ; 0x40000
+ 8003686:      6013            str     r3, [r2, #0]
 
   /* Disable all interrupts */
   RCC->CIR = 0x00000000;
- 8003210:      4b06            ldr     r3, [pc, #24]   ; (800322c <SystemInit+0x60>)
- 8003212:      2200            movs    r2, #0
- 8003214:      60da            str     r2, [r3, #12]
+ 8003688:      4b06            ldr     r3, [pc, #24]   ; (80036a4 <SystemInit+0x60>)
+ 800368a:      2200            movs    r2, #0
+ 800368c:      60da            str     r2, [r3, #12]
 
   /* Configure the Vector Table location add offset address ------------------*/
 #ifdef VECT_TAB_SRAM
   SCB->VTOR = RAMDTCM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
 #else
   SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
- 8003216:      4b04            ldr     r3, [pc, #16]   ; (8003228 <SystemInit+0x5c>)
- 8003218:      f04f 6200       mov.w   r2, #134217728  ; 0x8000000
- 800321c:      609a            str     r2, [r3, #8]
+ 800368e:      4b04            ldr     r3, [pc, #16]   ; (80036a0 <SystemInit+0x5c>)
+ 8003690:      f04f 6200       mov.w   r2, #134217728  ; 0x8000000
+ 8003694:      609a            str     r2, [r3, #8]
 #endif
 }
- 800321e:      bf00            nop
- 8003220:      46bd            mov     sp, r7
- 8003222:      f85d 7b04       ldr.w   r7, [sp], #4
- 8003226:      4770            bx      lr
- 8003228:      e000ed00        .word   0xe000ed00
- 800322c:      40023800        .word   0x40023800
- 8003230:      fef6ffff        .word   0xfef6ffff
- 8003234:      24003010        .word   0x24003010
+ 8003696:      bf00            nop
+ 8003698:      46bd            mov     sp, r7
+ 800369a:      f85d 7b04       ldr.w   r7, [sp], #4
+ 800369e:      4770            bx      lr
+ 80036a0:      e000ed00        .word   0xe000ed00
+ 80036a4:      40023800        .word   0x40023800
+ 80036a8:      fef6ffff        .word   0xfef6ffff
+ 80036ac:      24003010        .word   0x24003010
 
-08003238 <Reset_Handler>:
+080036b0 <Reset_Handler>:
 
     .section  .text.Reset_Handler
   .weak  Reset_Handler
   .type  Reset_Handler, %function
 Reset_Handler:  
   ldr   sp, =_estack      /* set stack pointer */
- 8003238:      f8df d034       ldr.w   sp, [pc, #52]   ; 8003270 <LoopFillZerobss+0x14>
+ 80036b0:      f8df d034       ldr.w   sp, [pc, #52]   ; 80036e8 <LoopFillZerobss+0x14>
 
 /* Copy the data segment initializers from flash to SRAM */  
   movs  r1, #0
- 800323c:      2100            movs    r1, #0
+ 80036b4:      2100            movs    r1, #0
   b  LoopCopyDataInit
- 800323e:      e003            b.n     8003248 <LoopCopyDataInit>
+ 80036b6:      e003            b.n     80036c0 <LoopCopyDataInit>
 
-08003240 <CopyDataInit>:
+080036b8 <CopyDataInit>:
 
 CopyDataInit:
   ldr  r3, =_sidata
- 8003240:      4b0c            ldr     r3, [pc, #48]   ; (8003274 <LoopFillZerobss+0x18>)
+ 80036b8:      4b0c            ldr     r3, [pc, #48]   ; (80036ec <LoopFillZerobss+0x18>)
   ldr  r3, [r3, r1]
- 8003242:      585b            ldr     r3, [r3, r1]
+ 80036ba:      585b            ldr     r3, [r3, r1]
   str  r3, [r0, r1]
- 8003244:      5043            str     r3, [r0, r1]
+ 80036bc:      5043            str     r3, [r0, r1]
   adds  r1, r1, #4
- 8003246:      3104            adds    r1, #4
+ 80036be:      3104            adds    r1, #4
 
-08003248 <LoopCopyDataInit>:
+080036c0 <LoopCopyDataInit>:
     
 LoopCopyDataInit:
   ldr  r0, =_sdata
- 8003248:      480b            ldr     r0, [pc, #44]   ; (8003278 <LoopFillZerobss+0x1c>)
+ 80036c0:      480b            ldr     r0, [pc, #44]   ; (80036f0 <LoopFillZerobss+0x1c>)
   ldr  r3, =_edata
- 800324a:      4b0c            ldr     r3, [pc, #48]   ; (800327c <LoopFillZerobss+0x20>)
+ 80036c2:      4b0c            ldr     r3, [pc, #48]   ; (80036f4 <LoopFillZerobss+0x20>)
   adds  r2, r0, r1
- 800324c:      1842            adds    r2, r0, r1
+ 80036c4:      1842            adds    r2, r0, r1
   cmp  r2, r3
- 800324e:      429a            cmp     r2, r3
+ 80036c6:      429a            cmp     r2, r3
   bcc  CopyDataInit
- 8003250:      d3f6            bcc.n   8003240 <CopyDataInit>
+ 80036c8:      d3f6            bcc.n   80036b8 <CopyDataInit>
   ldr  r2, =_sbss
- 8003252:      4a0b            ldr     r2, [pc, #44]   ; (8003280 <LoopFillZerobss+0x24>)
+ 80036ca:      4a0b            ldr     r2, [pc, #44]   ; (80036f8 <LoopFillZerobss+0x24>)
   b  LoopFillZerobss
- 8003254:      e002            b.n     800325c <LoopFillZerobss>
+ 80036cc:      e002            b.n     80036d4 <LoopFillZerobss>
 
-08003256 <FillZerobss>:
+080036ce <FillZerobss>:
 /* Zero fill the bss segment. */  
 FillZerobss:
   movs  r3, #0
- 8003256:      2300            movs    r3, #0
+ 80036ce:      2300            movs    r3, #0
   str  r3, [r2], #4
- 8003258:      f842 3b04       str.w   r3, [r2], #4
+ 80036d0:      f842 3b04       str.w   r3, [r2], #4
 
-0800325c <LoopFillZerobss>:
+080036d4 <LoopFillZerobss>:
     
 LoopFillZerobss:
   ldr  r3, = _ebss
- 800325c:      4b09            ldr     r3, [pc, #36]   ; (8003284 <LoopFillZerobss+0x28>)
+ 80036d4:      4b09            ldr     r3, [pc, #36]   ; (80036fc <LoopFillZerobss+0x28>)
   cmp  r2, r3
- 800325e:      429a            cmp     r2, r3
+ 80036d6:      429a            cmp     r2, r3
   bcc  FillZerobss
- 8003260:      d3f9            bcc.n   8003256 <FillZerobss>
+ 80036d8:      d3f9            bcc.n   80036ce <FillZerobss>
 
 /* Call the clock system initialization function.*/
   bl  SystemInit   
- 8003262:      f7ff ffb3       bl      80031cc <SystemInit>
+ 80036da:      f7ff ffb3       bl      8003644 <SystemInit>
 /* Call static constructors */
     bl __libc_init_array
- 8003266:      f000 f811       bl      800328c <__libc_init_array>
+ 80036de:      f000 f811       bl      8003704 <__libc_init_array>
 /* Call the application's entry point.*/
   bl  main
- 800326a:      f7ff fd79       bl      8002d60 <main>
+ 80036e2:      f7ff fccb       bl      800307c <main>
   bx  lr    
- 800326e:      4770            bx      lr
+ 80036e6:      4770            bx      lr
   ldr   sp, =_estack      /* set stack pointer */
- 8003270:      20080000        .word   0x20080000
+ 80036e8:      20080000        .word   0x20080000
   ldr  r3, =_sidata
- 8003274:      0800332c        .word   0x0800332c
+ 80036ec:      080037a4        .word   0x080037a4
   ldr  r0, =_sdata
- 8003278:      20000000        .word   0x20000000
+ 80036f0:      20000000        .word   0x20000000
   ldr  r3, =_edata
- 800327c:      2000000c        .word   0x2000000c
+ 80036f4:      2000000c        .word   0x2000000c
   ldr  r2, =_sbss
- 8003280:      2000000c        .word   0x2000000c
+ 80036f8:      2000000c        .word   0x2000000c
   ldr  r3, = _ebss
- 8003284:      2000016c        .word   0x2000016c
+ 80036fc:      200001ac        .word   0x200001ac
 
-08003288 <ADC_IRQHandler>:
+08003700 <ADC_IRQHandler>:
  * @retval None       
 */
     .section  .text.Default_Handler,"ax",%progbits
 Default_Handler:
 Infinite_Loop:
   b  Infinite_Loop
- 8003288:      e7fe            b.n     8003288 <ADC_IRQHandler>
+ 8003700:      e7fe            b.n     8003700 <ADC_IRQHandler>
        ...
 
-0800328c <__libc_init_array>:
- 800328c:      b570            push    {r4, r5, r6, lr}
- 800328e:      4e0d            ldr     r6, [pc, #52]   ; (80032c4 <__libc_init_array+0x38>)
- 8003290:      4c0d            ldr     r4, [pc, #52]   ; (80032c8 <__libc_init_array+0x3c>)
- 8003292:      1ba4            subs    r4, r4, r6
- 8003294:      10a4            asrs    r4, r4, #2
- 8003296:      2500            movs    r5, #0
- 8003298:      42a5            cmp     r5, r4
- 800329a:      d109            bne.n   80032b0 <__libc_init_array+0x24>
- 800329c:      4e0b            ldr     r6, [pc, #44]   ; (80032cc <__libc_init_array+0x40>)
- 800329e:      4c0c            ldr     r4, [pc, #48]   ; (80032d0 <__libc_init_array+0x44>)
- 80032a0:      f000 f820       bl      80032e4 <_init>
- 80032a4:      1ba4            subs    r4, r4, r6
- 80032a6:      10a4            asrs    r4, r4, #2
- 80032a8:      2500            movs    r5, #0
- 80032aa:      42a5            cmp     r5, r4
- 80032ac:      d105            bne.n   80032ba <__libc_init_array+0x2e>
- 80032ae:      bd70            pop     {r4, r5, r6, pc}
- 80032b0:      f856 3025       ldr.w   r3, [r6, r5, lsl #2]
- 80032b4:      4798            blx     r3
- 80032b6:      3501            adds    r5, #1
- 80032b8:      e7ee            b.n     8003298 <__libc_init_array+0xc>
- 80032ba:      f856 3025       ldr.w   r3, [r6, r5, lsl #2]
- 80032be:      4798            blx     r3
- 80032c0:      3501            adds    r5, #1
- 80032c2:      e7f2            b.n     80032aa <__libc_init_array+0x1e>
- 80032c4:      08003324        .word   0x08003324
- 80032c8:      08003324        .word   0x08003324
- 80032cc:      08003324        .word   0x08003324
- 80032d0:      08003328        .word   0x08003328
-
-080032d4 <memset>:
- 80032d4:      4402            add     r2, r0
- 80032d6:      4603            mov     r3, r0
- 80032d8:      4293            cmp     r3, r2
- 80032da:      d100            bne.n   80032de <memset+0xa>
- 80032dc:      4770            bx      lr
- 80032de:      f803 1b01       strb.w  r1, [r3], #1
- 80032e2:      e7f9            b.n     80032d8 <memset+0x4>
-
-080032e4 <_init>:
- 80032e4:      b5f8            push    {r3, r4, r5, r6, r7, lr}
- 80032e6:      bf00            nop
- 80032e8:      bcf8            pop     {r3, r4, r5, r6, r7}
- 80032ea:      bc08            pop     {r3}
- 80032ec:      469e            mov     lr, r3
- 80032ee:      4770            bx      lr
-
-080032f0 <_fini>:
- 80032f0:      b5f8            push    {r3, r4, r5, r6, r7, lr}
- 80032f2:      bf00            nop
- 80032f4:      bcf8            pop     {r3, r4, r5, r6, r7}
- 80032f6:      bc08            pop     {r3}
- 80032f8:      469e            mov     lr, r3
- 80032fa:      4770            bx      lr
+08003704 <__libc_init_array>:
+ 8003704:      b570            push    {r4, r5, r6, lr}
+ 8003706:      4e0d            ldr     r6, [pc, #52]   ; (800373c <__libc_init_array+0x38>)
+ 8003708:      4c0d            ldr     r4, [pc, #52]   ; (8003740 <__libc_init_array+0x3c>)
+ 800370a:      1ba4            subs    r4, r4, r6
+ 800370c:      10a4            asrs    r4, r4, #2
+ 800370e:      2500            movs    r5, #0
+ 8003710:      42a5            cmp     r5, r4
+ 8003712:      d109            bne.n   8003728 <__libc_init_array+0x24>
+ 8003714:      4e0b            ldr     r6, [pc, #44]   ; (8003744 <__libc_init_array+0x40>)
+ 8003716:      4c0c            ldr     r4, [pc, #48]   ; (8003748 <__libc_init_array+0x44>)
+ 8003718:      f000 f820       bl      800375c <_init>
+ 800371c:      1ba4            subs    r4, r4, r6
+ 800371e:      10a4            asrs    r4, r4, #2
+ 8003720:      2500            movs    r5, #0
+ 8003722:      42a5            cmp     r5, r4
+ 8003724:      d105            bne.n   8003732 <__libc_init_array+0x2e>
+ 8003726:      bd70            pop     {r4, r5, r6, pc}
+ 8003728:      f856 3025       ldr.w   r3, [r6, r5, lsl #2]
+ 800372c:      4798            blx     r3
+ 800372e:      3501            adds    r5, #1
+ 8003730:      e7ee            b.n     8003710 <__libc_init_array+0xc>
+ 8003732:      f856 3025       ldr.w   r3, [r6, r5, lsl #2]
+ 8003736:      4798            blx     r3
+ 8003738:      3501            adds    r5, #1
+ 800373a:      e7f2            b.n     8003722 <__libc_init_array+0x1e>
+ 800373c:      0800379c        .word   0x0800379c
+ 8003740:      0800379c        .word   0x0800379c
+ 8003744:      0800379c        .word   0x0800379c
+ 8003748:      080037a0        .word   0x080037a0
+
+0800374c <memset>:
+ 800374c:      4402            add     r2, r0
+ 800374e:      4603            mov     r3, r0
+ 8003750:      4293            cmp     r3, r2
+ 8003752:      d100            bne.n   8003756 <memset+0xa>
+ 8003754:      4770            bx      lr
+ 8003756:      f803 1b01       strb.w  r1, [r3], #1
+ 800375a:      e7f9            b.n     8003750 <memset+0x4>
+
+0800375c <_init>:
+ 800375c:      b5f8            push    {r3, r4, r5, r6, r7, lr}
+ 800375e:      bf00            nop
+ 8003760:      bcf8            pop     {r3, r4, r5, r6, r7}
+ 8003762:      bc08            pop     {r3}
+ 8003764:      469e            mov     lr, r3
+ 8003766:      4770            bx      lr
+
+08003768 <_fini>:
+ 8003768:      b5f8            push    {r3, r4, r5, r6, r7, lr}
+ 800376a:      bf00            nop
+ 800376c:      bcf8            pop     {r3, r4, r5, r6, r7}
+ 800376e:      bc08            pop     {r3}
+ 8003770:      469e            mov     lr, r3
+ 8003772:      4770            bx      lr
diff --git a/otto_controller_source/Inc/STM32Hardware.h b/otto_controller_source/Inc/STM32Hardware.h
new file mode 100644 (file)
index 0000000..e446482
--- /dev/null
@@ -0,0 +1,120 @@
+/* 
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2018, Kenta Yonekura (a.k.a. yoneken)
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ROS_STM32_HARDWARE_H_
+#define ROS_STM32_HARDWARE_H_
+
+#include "stm32f7xx_hal.h"
+#include "stm32f7xx_hal_uart.h"
+
+extern UART_HandleTypeDef huart3;
+
+class STM32Hardware {
+  protected:
+    UART_HandleTypeDef *huart;
+
+    const static uint16_t rbuflen = 128;
+    uint8_t rbuf[rbuflen];
+    uint32_t rind;
+    inline uint32_t getRdmaInd(void){ return (rbuflen - huart->hdmarx->Instance->NDTR) & (rbuflen - 1); }
+
+    const static uint16_t tbuflen = 256;
+    uint8_t tbuf[tbuflen];
+    uint32_t twind, tfind;
+
+  public:
+    STM32Hardware():
+      huart(&huart3), rind(0), twind(0), tfind(0){
+    }
+
+    STM32Hardware(UART_HandleTypeDef *huart_):
+      huart(huart_), rind(0), twind(0), tfind(0){
+    }
+  
+    void init(){
+      reset_rbuf();
+    }
+
+    void reset_rbuf(void){
+      HAL_UART_Receive_DMA(huart, rbuf, rbuflen);
+    }
+
+    int read(){
+      int c = -1;
+      if(rind != getRdmaInd()){
+        c = rbuf[rind++];
+        rind &= rbuflen - 1;
+      }
+      return c;
+    }
+
+    void flush(void){
+      static bool mutex = false;
+
+      if((huart->gState == HAL_UART_STATE_READY) && !mutex){
+        mutex = true;
+
+        if(twind != tfind){
+          uint16_t len = tfind < twind ? twind - tfind : tbuflen - tfind;
+          HAL_UART_Transmit_DMA(huart, &(tbuf[tfind]), len);
+          tfind = (tfind + len) & (tbuflen - 1);
+        }
+        mutex = false;
+      }
+    }
+
+    void write(uint8_t* data, int length){
+
+
+      int n = length;
+      n = n <= tbuflen ? n : tbuflen;
+
+      int n_tail = n <= tbuflen - twind ? n : tbuflen - twind;
+      memcpy(&(tbuf[twind]), data, n_tail);
+      twind = (twind + n) & (tbuflen - 1);
+
+      if(n != n_tail){
+        memcpy(tbuf, &(data[n_tail]), n - n_tail);
+      }
+
+      flush();
+    }
+
+    unsigned long time(){ return HAL_GetTick(); }
+
+  protected:
+};
+
+#endif
+
diff --git a/otto_controller_source/Inc/actionlib/TestAction.h b/otto_controller_source/Inc/actionlib/TestAction.h
new file mode 100644 (file)
index 0000000..ef50b96
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_TestAction_h
+#define _ROS_actionlib_TestAction_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "actionlib/TestActionGoal.h"
+#include "actionlib/TestActionResult.h"
+#include "actionlib/TestActionFeedback.h"
+
+namespace actionlib
+{
+
+  class TestAction : public ros::Msg
+  {
+    public:
+      typedef actionlib::TestActionGoal _action_goal_type;
+      _action_goal_type action_goal;
+      typedef actionlib::TestActionResult _action_result_type;
+      _action_result_type action_result;
+      typedef actionlib::TestActionFeedback _action_feedback_type;
+      _action_feedback_type action_feedback;
+
+    TestAction():
+      action_goal(),
+      action_result(),
+      action_feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->action_goal.serialize(outbuffer + offset);
+      offset += this->action_result.serialize(outbuffer + offset);
+      offset += this->action_feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->action_goal.deserialize(inbuffer + offset);
+      offset += this->action_result.deserialize(inbuffer + offset);
+      offset += this->action_feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestAction"; };
+    const char * getMD5(){ return "991e87a72802262dfbe5d1b3cf6efc9a"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib/TestActionFeedback.h b/otto_controller_source/Inc/actionlib/TestActionFeedback.h
new file mode 100644 (file)
index 0000000..3fd85bf
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_TestActionFeedback_h
+#define _ROS_actionlib_TestActionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "actionlib/TestFeedback.h"
+
+namespace actionlib
+{
+
+  class TestActionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef actionlib::TestFeedback _feedback_type;
+      _feedback_type feedback;
+
+    TestActionFeedback():
+      header(),
+      status(),
+      feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestActionFeedback"; };
+    const char * getMD5(){ return "6d3d0bf7fb3dda24779c010a9f3eb7cb"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib/TestActionGoal.h b/otto_controller_source/Inc/actionlib/TestActionGoal.h
new file mode 100644 (file)
index 0000000..5c2cb95
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_TestActionGoal_h
+#define _ROS_actionlib_TestActionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalID.h"
+#include "actionlib/TestGoal.h"
+
+namespace actionlib
+{
+
+  class TestActionGoal : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef actionlib::TestGoal _goal_type;
+      _goal_type goal;
+
+    TestActionGoal():
+      header(),
+      goal_id(),
+      goal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->goal_id.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestActionGoal"; };
+    const char * getMD5(){ return "348369c5b403676156094e8c159720bf"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib/TestActionResult.h b/otto_controller_source/Inc/actionlib/TestActionResult.h
new file mode 100644 (file)
index 0000000..e6f92ec
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_TestActionResult_h
+#define _ROS_actionlib_TestActionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "actionlib/TestResult.h"
+
+namespace actionlib
+{
+
+  class TestActionResult : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef actionlib::TestResult _result_type;
+      _result_type result;
+
+    TestActionResult():
+      header(),
+      status(),
+      result()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->result.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->result.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestActionResult"; };
+    const char * getMD5(){ return "3d669e3a63aa986c667ea7b0f46ce85e"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib/TestFeedback.h b/otto_controller_source/Inc/actionlib/TestFeedback.h
new file mode 100644 (file)
index 0000000..a059f79
--- /dev/null
@@ -0,0 +1,62 @@
+#ifndef _ROS_actionlib_TestFeedback_h
+#define _ROS_actionlib_TestFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib
+{
+
+  class TestFeedback : public ros::Msg
+  {
+    public:
+      typedef int32_t _feedback_type;
+      _feedback_type feedback;
+
+    TestFeedback():
+      feedback(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_feedback;
+      u_feedback.real = this->feedback;
+      *(outbuffer + offset + 0) = (u_feedback.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_feedback.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_feedback.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_feedback.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->feedback);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_feedback;
+      u_feedback.base = 0;
+      u_feedback.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_feedback.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_feedback.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_feedback.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->feedback = u_feedback.real;
+      offset += sizeof(this->feedback);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestFeedback"; };
+    const char * getMD5(){ return "49ceb5b32ea3af22073ede4a0328249e"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib/TestGoal.h b/otto_controller_source/Inc/actionlib/TestGoal.h
new file mode 100644 (file)
index 0000000..018b66f
--- /dev/null
@@ -0,0 +1,62 @@
+#ifndef _ROS_actionlib_TestGoal_h
+#define _ROS_actionlib_TestGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib
+{
+
+  class TestGoal : public ros::Msg
+  {
+    public:
+      typedef int32_t _goal_type;
+      _goal_type goal;
+
+    TestGoal():
+      goal(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_goal;
+      u_goal.real = this->goal;
+      *(outbuffer + offset + 0) = (u_goal.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_goal.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_goal.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_goal.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->goal);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_goal;
+      u_goal.base = 0;
+      u_goal.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_goal.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_goal.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_goal.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->goal = u_goal.real;
+      offset += sizeof(this->goal);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestGoal"; };
+    const char * getMD5(){ return "18df0149936b7aa95588e3862476ebde"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib/TestRequestAction.h b/otto_controller_source/Inc/actionlib/TestRequestAction.h
new file mode 100644 (file)
index 0000000..8bf3ea2
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_TestRequestAction_h
+#define _ROS_actionlib_TestRequestAction_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "actionlib/TestRequestActionGoal.h"
+#include "actionlib/TestRequestActionResult.h"
+#include "actionlib/TestRequestActionFeedback.h"
+
+namespace actionlib
+{
+
+  class TestRequestAction : public ros::Msg
+  {
+    public:
+      typedef actionlib::TestRequestActionGoal _action_goal_type;
+      _action_goal_type action_goal;
+      typedef actionlib::TestRequestActionResult _action_result_type;
+      _action_result_type action_result;
+      typedef actionlib::TestRequestActionFeedback _action_feedback_type;
+      _action_feedback_type action_feedback;
+
+    TestRequestAction():
+      action_goal(),
+      action_result(),
+      action_feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->action_goal.serialize(outbuffer + offset);
+      offset += this->action_result.serialize(outbuffer + offset);
+      offset += this->action_feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->action_goal.deserialize(inbuffer + offset);
+      offset += this->action_result.deserialize(inbuffer + offset);
+      offset += this->action_feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestRequestAction"; };
+    const char * getMD5(){ return "dc44b1f4045dbf0d1db54423b3b86b30"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib/TestRequestActionFeedback.h b/otto_controller_source/Inc/actionlib/TestRequestActionFeedback.h
new file mode 100644 (file)
index 0000000..95e3dd3
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_TestRequestActionFeedback_h
+#define _ROS_actionlib_TestRequestActionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "actionlib/TestRequestFeedback.h"
+
+namespace actionlib
+{
+
+  class TestRequestActionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef actionlib::TestRequestFeedback _feedback_type;
+      _feedback_type feedback;
+
+    TestRequestActionFeedback():
+      header(),
+      status(),
+      feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestRequestActionFeedback"; };
+    const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib/TestRequestActionGoal.h b/otto_controller_source/Inc/actionlib/TestRequestActionGoal.h
new file mode 100644 (file)
index 0000000..8ccf742
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_TestRequestActionGoal_h
+#define _ROS_actionlib_TestRequestActionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalID.h"
+#include "actionlib/TestRequestGoal.h"
+
+namespace actionlib
+{
+
+  class TestRequestActionGoal : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef actionlib::TestRequestGoal _goal_type;
+      _goal_type goal;
+
+    TestRequestActionGoal():
+      header(),
+      goal_id(),
+      goal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->goal_id.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestRequestActionGoal"; };
+    const char * getMD5(){ return "1889556d3fef88f821c7cb004e4251f3"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib/TestRequestActionResult.h b/otto_controller_source/Inc/actionlib/TestRequestActionResult.h
new file mode 100644 (file)
index 0000000..63038f6
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_TestRequestActionResult_h
+#define _ROS_actionlib_TestRequestActionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "actionlib/TestRequestResult.h"
+
+namespace actionlib
+{
+
+  class TestRequestActionResult : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef actionlib::TestRequestResult _result_type;
+      _result_type result;
+
+    TestRequestActionResult():
+      header(),
+      status(),
+      result()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->result.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->result.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestRequestActionResult"; };
+    const char * getMD5(){ return "0476d1fdf437a3a6e7d6d0e9f5561298"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib/TestRequestFeedback.h b/otto_controller_source/Inc/actionlib/TestRequestFeedback.h
new file mode 100644 (file)
index 0000000..4a104be
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _ROS_actionlib_TestRequestFeedback_h
+#define _ROS_actionlib_TestRequestFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib
+{
+
+  class TestRequestFeedback : public ros::Msg
+  {
+    public:
+
+    TestRequestFeedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestRequestFeedback"; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib/TestRequestGoal.h b/otto_controller_source/Inc/actionlib/TestRequestGoal.h
new file mode 100644 (file)
index 0000000..ea49774
--- /dev/null
@@ -0,0 +1,215 @@
+#ifndef _ROS_actionlib_TestRequestGoal_h
+#define _ROS_actionlib_TestRequestGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/duration.h"
+
+namespace actionlib
+{
+
+  class TestRequestGoal : public ros::Msg
+  {
+    public:
+      typedef int32_t _terminate_status_type;
+      _terminate_status_type terminate_status;
+      typedef bool _ignore_cancel_type;
+      _ignore_cancel_type ignore_cancel;
+      typedef const char* _result_text_type;
+      _result_text_type result_text;
+      typedef int32_t _the_result_type;
+      _the_result_type the_result;
+      typedef bool _is_simple_client_type;
+      _is_simple_client_type is_simple_client;
+      typedef ros::Duration _delay_accept_type;
+      _delay_accept_type delay_accept;
+      typedef ros::Duration _delay_terminate_type;
+      _delay_terminate_type delay_terminate;
+      typedef ros::Duration _pause_status_type;
+      _pause_status_type pause_status;
+      enum { TERMINATE_SUCCESS =  0 };
+      enum { TERMINATE_ABORTED =  1 };
+      enum { TERMINATE_REJECTED =  2 };
+      enum { TERMINATE_LOSE =  3 };
+      enum { TERMINATE_DROP =  4 };
+      enum { TERMINATE_EXCEPTION =  5 };
+
+    TestRequestGoal():
+      terminate_status(0),
+      ignore_cancel(0),
+      result_text(""),
+      the_result(0),
+      is_simple_client(0),
+      delay_accept(),
+      delay_terminate(),
+      pause_status()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_terminate_status;
+      u_terminate_status.real = this->terminate_status;
+      *(outbuffer + offset + 0) = (u_terminate_status.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_terminate_status.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_terminate_status.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_terminate_status.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->terminate_status);
+      union {
+        bool real;
+        uint8_t base;
+      } u_ignore_cancel;
+      u_ignore_cancel.real = this->ignore_cancel;
+      *(outbuffer + offset + 0) = (u_ignore_cancel.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->ignore_cancel);
+      uint32_t length_result_text = strlen(this->result_text);
+      varToArr(outbuffer + offset, length_result_text);
+      offset += 4;
+      memcpy(outbuffer + offset, this->result_text, length_result_text);
+      offset += length_result_text;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_the_result;
+      u_the_result.real = this->the_result;
+      *(outbuffer + offset + 0) = (u_the_result.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_the_result.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_the_result.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_the_result.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->the_result);
+      union {
+        bool real;
+        uint8_t base;
+      } u_is_simple_client;
+      u_is_simple_client.real = this->is_simple_client;
+      *(outbuffer + offset + 0) = (u_is_simple_client.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->is_simple_client);
+      *(outbuffer + offset + 0) = (this->delay_accept.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->delay_accept.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->delay_accept.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->delay_accept.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->delay_accept.sec);
+      *(outbuffer + offset + 0) = (this->delay_accept.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->delay_accept.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->delay_accept.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->delay_accept.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->delay_accept.nsec);
+      *(outbuffer + offset + 0) = (this->delay_terminate.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->delay_terminate.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->delay_terminate.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->delay_terminate.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->delay_terminate.sec);
+      *(outbuffer + offset + 0) = (this->delay_terminate.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->delay_terminate.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->delay_terminate.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->delay_terminate.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->delay_terminate.nsec);
+      *(outbuffer + offset + 0) = (this->pause_status.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->pause_status.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->pause_status.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->pause_status.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->pause_status.sec);
+      *(outbuffer + offset + 0) = (this->pause_status.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->pause_status.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->pause_status.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->pause_status.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->pause_status.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_terminate_status;
+      u_terminate_status.base = 0;
+      u_terminate_status.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_terminate_status.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_terminate_status.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_terminate_status.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->terminate_status = u_terminate_status.real;
+      offset += sizeof(this->terminate_status);
+      union {
+        bool real;
+        uint8_t base;
+      } u_ignore_cancel;
+      u_ignore_cancel.base = 0;
+      u_ignore_cancel.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->ignore_cancel = u_ignore_cancel.real;
+      offset += sizeof(this->ignore_cancel);
+      uint32_t length_result_text;
+      arrToVar(length_result_text, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_result_text; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_result_text-1]=0;
+      this->result_text = (char *)(inbuffer + offset-1);
+      offset += length_result_text;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_the_result;
+      u_the_result.base = 0;
+      u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->the_result = u_the_result.real;
+      offset += sizeof(this->the_result);
+      union {
+        bool real;
+        uint8_t base;
+      } u_is_simple_client;
+      u_is_simple_client.base = 0;
+      u_is_simple_client.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->is_simple_client = u_is_simple_client.real;
+      offset += sizeof(this->is_simple_client);
+      this->delay_accept.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->delay_accept.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->delay_accept.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->delay_accept.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->delay_accept.sec);
+      this->delay_accept.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->delay_accept.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->delay_accept.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->delay_accept.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->delay_accept.nsec);
+      this->delay_terminate.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->delay_terminate.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->delay_terminate.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->delay_terminate.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->delay_terminate.sec);
+      this->delay_terminate.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->delay_terminate.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->delay_terminate.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->delay_terminate.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->delay_terminate.nsec);
+      this->pause_status.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->pause_status.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->pause_status.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->pause_status.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->pause_status.sec);
+      this->pause_status.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->pause_status.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->pause_status.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->pause_status.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->pause_status.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestRequestGoal"; };
+    const char * getMD5(){ return "db5d00ba98302d6c6dd3737e9a03ceea"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib/TestRequestResult.h b/otto_controller_source/Inc/actionlib/TestRequestResult.h
new file mode 100644 (file)
index 0000000..b2814ec
--- /dev/null
@@ -0,0 +1,80 @@
+#ifndef _ROS_actionlib_TestRequestResult_h
+#define _ROS_actionlib_TestRequestResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib
+{
+
+  class TestRequestResult : public ros::Msg
+  {
+    public:
+      typedef int32_t _the_result_type;
+      _the_result_type the_result;
+      typedef bool _is_simple_server_type;
+      _is_simple_server_type is_simple_server;
+
+    TestRequestResult():
+      the_result(0),
+      is_simple_server(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_the_result;
+      u_the_result.real = this->the_result;
+      *(outbuffer + offset + 0) = (u_the_result.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_the_result.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_the_result.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_the_result.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->the_result);
+      union {
+        bool real;
+        uint8_t base;
+      } u_is_simple_server;
+      u_is_simple_server.real = this->is_simple_server;
+      *(outbuffer + offset + 0) = (u_is_simple_server.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->is_simple_server);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_the_result;
+      u_the_result.base = 0;
+      u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_the_result.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->the_result = u_the_result.real;
+      offset += sizeof(this->the_result);
+      union {
+        bool real;
+        uint8_t base;
+      } u_is_simple_server;
+      u_is_simple_server.base = 0;
+      u_is_simple_server.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->is_simple_server = u_is_simple_server.real;
+      offset += sizeof(this->is_simple_server);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestRequestResult"; };
+    const char * getMD5(){ return "61c2364524499c7c5017e2f3fce7ba06"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib/TestResult.h b/otto_controller_source/Inc/actionlib/TestResult.h
new file mode 100644 (file)
index 0000000..10e6bc5
--- /dev/null
@@ -0,0 +1,62 @@
+#ifndef _ROS_actionlib_TestResult_h
+#define _ROS_actionlib_TestResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib
+{
+
+  class TestResult : public ros::Msg
+  {
+    public:
+      typedef int32_t _result_type;
+      _result_type result;
+
+    TestResult():
+      result(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_result;
+      u_result.real = this->result;
+      *(outbuffer + offset + 0) = (u_result.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_result.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_result.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_result.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->result);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_result;
+      u_result.base = 0;
+      u_result.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_result.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_result.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_result.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->result = u_result.real;
+      offset += sizeof(this->result);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TestResult"; };
+    const char * getMD5(){ return "034a8e20d6a306665e3a5b340fab3f09"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib/TwoIntsAction.h b/otto_controller_source/Inc/actionlib/TwoIntsAction.h
new file mode 100644 (file)
index 0000000..573ffcd
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_TwoIntsAction_h
+#define _ROS_actionlib_TwoIntsAction_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "actionlib/TwoIntsActionGoal.h"
+#include "actionlib/TwoIntsActionResult.h"
+#include "actionlib/TwoIntsActionFeedback.h"
+
+namespace actionlib
+{
+
+  class TwoIntsAction : public ros::Msg
+  {
+    public:
+      typedef actionlib::TwoIntsActionGoal _action_goal_type;
+      _action_goal_type action_goal;
+      typedef actionlib::TwoIntsActionResult _action_result_type;
+      _action_result_type action_result;
+      typedef actionlib::TwoIntsActionFeedback _action_feedback_type;
+      _action_feedback_type action_feedback;
+
+    TwoIntsAction():
+      action_goal(),
+      action_result(),
+      action_feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->action_goal.serialize(outbuffer + offset);
+      offset += this->action_result.serialize(outbuffer + offset);
+      offset += this->action_feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->action_goal.deserialize(inbuffer + offset);
+      offset += this->action_result.deserialize(inbuffer + offset);
+      offset += this->action_feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TwoIntsAction"; };
+    const char * getMD5(){ return "6d1aa538c4bd6183a2dfb7fcac41ee50"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib/TwoIntsActionFeedback.h b/otto_controller_source/Inc/actionlib/TwoIntsActionFeedback.h
new file mode 100644 (file)
index 0000000..cad817d
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_TwoIntsActionFeedback_h
+#define _ROS_actionlib_TwoIntsActionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "actionlib/TwoIntsFeedback.h"
+
+namespace actionlib
+{
+
+  class TwoIntsActionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef actionlib::TwoIntsFeedback _feedback_type;
+      _feedback_type feedback;
+
+    TwoIntsActionFeedback():
+      header(),
+      status(),
+      feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TwoIntsActionFeedback"; };
+    const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib/TwoIntsActionGoal.h b/otto_controller_source/Inc/actionlib/TwoIntsActionGoal.h
new file mode 100644 (file)
index 0000000..6b99941
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_TwoIntsActionGoal_h
+#define _ROS_actionlib_TwoIntsActionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalID.h"
+#include "actionlib/TwoIntsGoal.h"
+
+namespace actionlib
+{
+
+  class TwoIntsActionGoal : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef actionlib::TwoIntsGoal _goal_type;
+      _goal_type goal;
+
+    TwoIntsActionGoal():
+      header(),
+      goal_id(),
+      goal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->goal_id.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TwoIntsActionGoal"; };
+    const char * getMD5(){ return "684a2db55d6ffb8046fb9d6764ce0860"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib/TwoIntsActionResult.h b/otto_controller_source/Inc/actionlib/TwoIntsActionResult.h
new file mode 100644 (file)
index 0000000..e3943fd
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_TwoIntsActionResult_h
+#define _ROS_actionlib_TwoIntsActionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "actionlib/TwoIntsResult.h"
+
+namespace actionlib
+{
+
+  class TwoIntsActionResult : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef actionlib::TwoIntsResult _result_type;
+      _result_type result;
+
+    TwoIntsActionResult():
+      header(),
+      status(),
+      result()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->result.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->result.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TwoIntsActionResult"; };
+    const char * getMD5(){ return "3ba7dea8b8cddcae4528ade4ef74b6e7"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib/TwoIntsFeedback.h b/otto_controller_source/Inc/actionlib/TwoIntsFeedback.h
new file mode 100644 (file)
index 0000000..2cd4f60
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _ROS_actionlib_TwoIntsFeedback_h
+#define _ROS_actionlib_TwoIntsFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib
+{
+
+  class TwoIntsFeedback : public ros::Msg
+  {
+    public:
+
+    TwoIntsFeedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TwoIntsFeedback"; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib/TwoIntsGoal.h b/otto_controller_source/Inc/actionlib/TwoIntsGoal.h
new file mode 100644 (file)
index 0000000..2e3fb5c
--- /dev/null
@@ -0,0 +1,102 @@
+#ifndef _ROS_actionlib_TwoIntsGoal_h
+#define _ROS_actionlib_TwoIntsGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib
+{
+
+  class TwoIntsGoal : public ros::Msg
+  {
+    public:
+      typedef int64_t _a_type;
+      _a_type a;
+      typedef int64_t _b_type;
+      _b_type b;
+
+    TwoIntsGoal():
+      a(0),
+      b(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_a;
+      u_a.real = this->a;
+      *(outbuffer + offset + 0) = (u_a.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_a.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_a.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_a.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_a.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_a.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_a.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_a.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->a);
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_b;
+      u_b.real = this->b;
+      *(outbuffer + offset + 0) = (u_b.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_b.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_b.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_b.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_b.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_b.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_b.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_b.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->b);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_a;
+      u_a.base = 0;
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->a = u_a.real;
+      offset += sizeof(this->a);
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_b;
+      u_b.base = 0;
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->b = u_b.real;
+      offset += sizeof(this->b);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TwoIntsGoal"; };
+    const char * getMD5(){ return "36d09b846be0b371c5f190354dd3153e"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib/TwoIntsResult.h b/otto_controller_source/Inc/actionlib/TwoIntsResult.h
new file mode 100644 (file)
index 0000000..afae9b0
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef _ROS_actionlib_TwoIntsResult_h
+#define _ROS_actionlib_TwoIntsResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib
+{
+
+  class TwoIntsResult : public ros::Msg
+  {
+    public:
+      typedef int64_t _sum_type;
+      _sum_type sum;
+
+    TwoIntsResult():
+      sum(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_sum;
+      u_sum.real = this->sum;
+      *(outbuffer + offset + 0) = (u_sum.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_sum.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_sum.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_sum.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_sum.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_sum.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_sum.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_sum.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->sum);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_sum;
+      u_sum.base = 0;
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->sum = u_sum.real;
+      offset += sizeof(this->sum);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib/TwoIntsResult"; };
+    const char * getMD5(){ return "b88405221c77b1878a3cbbfff53428d7"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib_msgs/GoalID.h b/otto_controller_source/Inc/actionlib_msgs/GoalID.h
new file mode 100644 (file)
index 0000000..160ca8a
--- /dev/null
@@ -0,0 +1,79 @@
+#ifndef _ROS_actionlib_msgs_GoalID_h
+#define _ROS_actionlib_msgs_GoalID_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/time.h"
+
+namespace actionlib_msgs
+{
+
+  class GoalID : public ros::Msg
+  {
+    public:
+      typedef ros::Time _stamp_type;
+      _stamp_type stamp;
+      typedef const char* _id_type;
+      _id_type id;
+
+    GoalID():
+      stamp(),
+      id("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->stamp.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stamp.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stamp.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stamp.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stamp.sec);
+      *(outbuffer + offset + 0) = (this->stamp.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stamp.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stamp.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stamp.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stamp.nsec);
+      uint32_t length_id = strlen(this->id);
+      varToArr(outbuffer + offset, length_id);
+      offset += 4;
+      memcpy(outbuffer + offset, this->id, length_id);
+      offset += length_id;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->stamp.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->stamp.sec);
+      this->stamp.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->stamp.nsec);
+      uint32_t length_id;
+      arrToVar(length_id, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_id; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_id-1]=0;
+      this->id = (char *)(inbuffer + offset-1);
+      offset += length_id;
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_msgs/GoalID"; };
+    const char * getMD5(){ return "302881f31927c1df708a2dbab0e80ee8"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib_msgs/GoalStatus.h b/otto_controller_source/Inc/actionlib_msgs/GoalStatus.h
new file mode 100644 (file)
index 0000000..52e58af
--- /dev/null
@@ -0,0 +1,78 @@
+#ifndef _ROS_actionlib_msgs_GoalStatus_h
+#define _ROS_actionlib_msgs_GoalStatus_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "actionlib_msgs/GoalID.h"
+
+namespace actionlib_msgs
+{
+
+  class GoalStatus : public ros::Msg
+  {
+    public:
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef uint8_t _status_type;
+      _status_type status;
+      typedef const char* _text_type;
+      _text_type text;
+      enum { PENDING =  0    };
+      enum { ACTIVE =  1    };
+      enum { PREEMPTED =  2    };
+      enum { SUCCEEDED =  3    };
+      enum { ABORTED =  4    };
+      enum { REJECTED =  5    };
+      enum { PREEMPTING =  6    };
+      enum { RECALLING =  7    };
+      enum { RECALLED =  8    };
+      enum { LOST =  9    };
+
+    GoalStatus():
+      goal_id(),
+      status(0),
+      text("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->goal_id.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->status >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->status);
+      uint32_t length_text = strlen(this->text);
+      varToArr(outbuffer + offset, length_text);
+      offset += 4;
+      memcpy(outbuffer + offset, this->text, length_text);
+      offset += length_text;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      this->status =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->status);
+      uint32_t length_text;
+      arrToVar(length_text, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_text; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_text-1]=0;
+      this->text = (char *)(inbuffer + offset-1);
+      offset += length_text;
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_msgs/GoalStatus"; };
+    const char * getMD5(){ return "d388f9b87b3c471f784434d671988d4a"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib_msgs/GoalStatusArray.h b/otto_controller_source/Inc/actionlib_msgs/GoalStatusArray.h
new file mode 100644 (file)
index 0000000..e658c50
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef _ROS_actionlib_msgs_GoalStatusArray_h
+#define _ROS_actionlib_msgs_GoalStatusArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+
+namespace actionlib_msgs
+{
+
+  class GoalStatusArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t status_list_length;
+      typedef actionlib_msgs::GoalStatus _status_list_type;
+      _status_list_type st_status_list;
+      _status_list_type * status_list;
+
+    GoalStatusArray():
+      header(),
+      status_list_length(0), status_list(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->status_list_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->status_list_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->status_list_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->status_list_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->status_list_length);
+      for( uint32_t i = 0; i < status_list_length; i++){
+      offset += this->status_list[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t status_list_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      status_list_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      status_list_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      status_list_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->status_list_length);
+      if(status_list_lengthT > status_list_length)
+        this->status_list = (actionlib_msgs::GoalStatus*)realloc(this->status_list, status_list_lengthT * sizeof(actionlib_msgs::GoalStatus));
+      status_list_length = status_list_lengthT;
+      for( uint32_t i = 0; i < status_list_length; i++){
+      offset += this->st_status_list.deserialize(inbuffer + offset);
+        memcpy( &(this->status_list[i]), &(this->st_status_list), sizeof(actionlib_msgs::GoalStatus));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_msgs/GoalStatusArray"; };
+    const char * getMD5(){ return "8b2b82f13216d0a8ea88bd3af735e619"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib_tutorials/AveragingAction.h b/otto_controller_source/Inc/actionlib_tutorials/AveragingAction.h
new file mode 100644 (file)
index 0000000..660ec28
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_tutorials_AveragingAction_h
+#define _ROS_actionlib_tutorials_AveragingAction_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "actionlib_tutorials/AveragingActionGoal.h"
+#include "actionlib_tutorials/AveragingActionResult.h"
+#include "actionlib_tutorials/AveragingActionFeedback.h"
+
+namespace actionlib_tutorials
+{
+
+  class AveragingAction : public ros::Msg
+  {
+    public:
+      typedef actionlib_tutorials::AveragingActionGoal _action_goal_type;
+      _action_goal_type action_goal;
+      typedef actionlib_tutorials::AveragingActionResult _action_result_type;
+      _action_result_type action_result;
+      typedef actionlib_tutorials::AveragingActionFeedback _action_feedback_type;
+      _action_feedback_type action_feedback;
+
+    AveragingAction():
+      action_goal(),
+      action_result(),
+      action_feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->action_goal.serialize(outbuffer + offset);
+      offset += this->action_result.serialize(outbuffer + offset);
+      offset += this->action_feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->action_goal.deserialize(inbuffer + offset);
+      offset += this->action_result.deserialize(inbuffer + offset);
+      offset += this->action_feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/AveragingAction"; };
+    const char * getMD5(){ return "628678f2b4fa6a5951746a4a2d39e716"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib_tutorials/AveragingActionFeedback.h b/otto_controller_source/Inc/actionlib_tutorials/AveragingActionFeedback.h
new file mode 100644 (file)
index 0000000..36f66d2
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_tutorials_AveragingActionFeedback_h
+#define _ROS_actionlib_tutorials_AveragingActionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "actionlib_tutorials/AveragingFeedback.h"
+
+namespace actionlib_tutorials
+{
+
+  class AveragingActionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef actionlib_tutorials::AveragingFeedback _feedback_type;
+      _feedback_type feedback;
+
+    AveragingActionFeedback():
+      header(),
+      status(),
+      feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/AveragingActionFeedback"; };
+    const char * getMD5(){ return "78a4a09241b1791069223ae7ebd5b16b"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib_tutorials/AveragingActionGoal.h b/otto_controller_source/Inc/actionlib_tutorials/AveragingActionGoal.h
new file mode 100644 (file)
index 0000000..9d98d45
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_tutorials_AveragingActionGoal_h
+#define _ROS_actionlib_tutorials_AveragingActionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalID.h"
+#include "actionlib_tutorials/AveragingGoal.h"
+
+namespace actionlib_tutorials
+{
+
+  class AveragingActionGoal : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef actionlib_tutorials::AveragingGoal _goal_type;
+      _goal_type goal;
+
+    AveragingActionGoal():
+      header(),
+      goal_id(),
+      goal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->goal_id.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/AveragingActionGoal"; };
+    const char * getMD5(){ return "1561825b734ebd6039851c501e3fb570"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib_tutorials/AveragingActionResult.h b/otto_controller_source/Inc/actionlib_tutorials/AveragingActionResult.h
new file mode 100644 (file)
index 0000000..2d3c5fa
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_tutorials_AveragingActionResult_h
+#define _ROS_actionlib_tutorials_AveragingActionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "actionlib_tutorials/AveragingResult.h"
+
+namespace actionlib_tutorials
+{
+
+  class AveragingActionResult : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef actionlib_tutorials::AveragingResult _result_type;
+      _result_type result;
+
+    AveragingActionResult():
+      header(),
+      status(),
+      result()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->result.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->result.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/AveragingActionResult"; };
+    const char * getMD5(){ return "8672cb489d347580acdcd05c5d497497"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib_tutorials/AveragingFeedback.h b/otto_controller_source/Inc/actionlib_tutorials/AveragingFeedback.h
new file mode 100644 (file)
index 0000000..77ce8a1
--- /dev/null
@@ -0,0 +1,134 @@
+#ifndef _ROS_actionlib_tutorials_AveragingFeedback_h
+#define _ROS_actionlib_tutorials_AveragingFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib_tutorials
+{
+
+  class AveragingFeedback : public ros::Msg
+  {
+    public:
+      typedef int32_t _sample_type;
+      _sample_type sample;
+      typedef float _data_type;
+      _data_type data;
+      typedef float _mean_type;
+      _mean_type mean;
+      typedef float _std_dev_type;
+      _std_dev_type std_dev;
+
+    AveragingFeedback():
+      sample(0),
+      data(0),
+      mean(0),
+      std_dev(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_sample;
+      u_sample.real = this->sample;
+      *(outbuffer + offset + 0) = (u_sample.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_sample.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_sample.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_sample.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->sample);
+      union {
+        float real;
+        uint32_t base;
+      } u_data;
+      u_data.real = this->data;
+      *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data);
+      union {
+        float real;
+        uint32_t base;
+      } u_mean;
+      u_mean.real = this->mean;
+      *(outbuffer + offset + 0) = (u_mean.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_mean.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_mean.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_mean.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->mean);
+      union {
+        float real;
+        uint32_t base;
+      } u_std_dev;
+      u_std_dev.real = this->std_dev;
+      *(outbuffer + offset + 0) = (u_std_dev.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_std_dev.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_std_dev.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_std_dev.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->std_dev);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_sample;
+      u_sample.base = 0;
+      u_sample.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_sample.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_sample.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_sample.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->sample = u_sample.real;
+      offset += sizeof(this->sample);
+      union {
+        float real;
+        uint32_t base;
+      } u_data;
+      u_data.base = 0;
+      u_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->data = u_data.real;
+      offset += sizeof(this->data);
+      union {
+        float real;
+        uint32_t base;
+      } u_mean;
+      u_mean.base = 0;
+      u_mean.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_mean.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_mean.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_mean.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->mean = u_mean.real;
+      offset += sizeof(this->mean);
+      union {
+        float real;
+        uint32_t base;
+      } u_std_dev;
+      u_std_dev.base = 0;
+      u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->std_dev = u_std_dev.real;
+      offset += sizeof(this->std_dev);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/AveragingFeedback"; };
+    const char * getMD5(){ return "9e8dfc53c2f2a032ca33fa80ec46fd4f"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib_tutorials/AveragingGoal.h b/otto_controller_source/Inc/actionlib_tutorials/AveragingGoal.h
new file mode 100644 (file)
index 0000000..b515f38
--- /dev/null
@@ -0,0 +1,62 @@
+#ifndef _ROS_actionlib_tutorials_AveragingGoal_h
+#define _ROS_actionlib_tutorials_AveragingGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib_tutorials
+{
+
+  class AveragingGoal : public ros::Msg
+  {
+    public:
+      typedef int32_t _samples_type;
+      _samples_type samples;
+
+    AveragingGoal():
+      samples(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_samples;
+      u_samples.real = this->samples;
+      *(outbuffer + offset + 0) = (u_samples.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_samples.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_samples.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_samples.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->samples);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_samples;
+      u_samples.base = 0;
+      u_samples.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_samples.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_samples.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_samples.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->samples = u_samples.real;
+      offset += sizeof(this->samples);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/AveragingGoal"; };
+    const char * getMD5(){ return "32c9b10ef9b253faa93b93f564762c8f"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib_tutorials/AveragingResult.h b/otto_controller_source/Inc/actionlib_tutorials/AveragingResult.h
new file mode 100644 (file)
index 0000000..484e35b
--- /dev/null
@@ -0,0 +1,86 @@
+#ifndef _ROS_actionlib_tutorials_AveragingResult_h
+#define _ROS_actionlib_tutorials_AveragingResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib_tutorials
+{
+
+  class AveragingResult : public ros::Msg
+  {
+    public:
+      typedef float _mean_type;
+      _mean_type mean;
+      typedef float _std_dev_type;
+      _std_dev_type std_dev;
+
+    AveragingResult():
+      mean(0),
+      std_dev(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_mean;
+      u_mean.real = this->mean;
+      *(outbuffer + offset + 0) = (u_mean.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_mean.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_mean.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_mean.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->mean);
+      union {
+        float real;
+        uint32_t base;
+      } u_std_dev;
+      u_std_dev.real = this->std_dev;
+      *(outbuffer + offset + 0) = (u_std_dev.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_std_dev.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_std_dev.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_std_dev.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->std_dev);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_mean;
+      u_mean.base = 0;
+      u_mean.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_mean.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_mean.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_mean.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->mean = u_mean.real;
+      offset += sizeof(this->mean);
+      union {
+        float real;
+        uint32_t base;
+      } u_std_dev;
+      u_std_dev.base = 0;
+      u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_std_dev.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->std_dev = u_std_dev.real;
+      offset += sizeof(this->std_dev);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/AveragingResult"; };
+    const char * getMD5(){ return "d5c7decf6df75ffb4367a05c1bcc7612"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib_tutorials/FibonacciAction.h b/otto_controller_source/Inc/actionlib_tutorials/FibonacciAction.h
new file mode 100644 (file)
index 0000000..369edc1
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_tutorials_FibonacciAction_h
+#define _ROS_actionlib_tutorials_FibonacciAction_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "actionlib_tutorials/FibonacciActionGoal.h"
+#include "actionlib_tutorials/FibonacciActionResult.h"
+#include "actionlib_tutorials/FibonacciActionFeedback.h"
+
+namespace actionlib_tutorials
+{
+
+  class FibonacciAction : public ros::Msg
+  {
+    public:
+      typedef actionlib_tutorials::FibonacciActionGoal _action_goal_type;
+      _action_goal_type action_goal;
+      typedef actionlib_tutorials::FibonacciActionResult _action_result_type;
+      _action_result_type action_result;
+      typedef actionlib_tutorials::FibonacciActionFeedback _action_feedback_type;
+      _action_feedback_type action_feedback;
+
+    FibonacciAction():
+      action_goal(),
+      action_result(),
+      action_feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->action_goal.serialize(outbuffer + offset);
+      offset += this->action_result.serialize(outbuffer + offset);
+      offset += this->action_feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->action_goal.deserialize(inbuffer + offset);
+      offset += this->action_result.deserialize(inbuffer + offset);
+      offset += this->action_feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/FibonacciAction"; };
+    const char * getMD5(){ return "f59df5767bf7634684781c92598b2406"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib_tutorials/FibonacciActionFeedback.h b/otto_controller_source/Inc/actionlib_tutorials/FibonacciActionFeedback.h
new file mode 100644 (file)
index 0000000..313b9ee
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_tutorials_FibonacciActionFeedback_h
+#define _ROS_actionlib_tutorials_FibonacciActionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "actionlib_tutorials/FibonacciFeedback.h"
+
+namespace actionlib_tutorials
+{
+
+  class FibonacciActionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef actionlib_tutorials::FibonacciFeedback _feedback_type;
+      _feedback_type feedback;
+
+    FibonacciActionFeedback():
+      header(),
+      status(),
+      feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/FibonacciActionFeedback"; };
+    const char * getMD5(){ return "73b8497a9f629a31c0020900e4148f07"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib_tutorials/FibonacciActionGoal.h b/otto_controller_source/Inc/actionlib_tutorials/FibonacciActionGoal.h
new file mode 100644 (file)
index 0000000..61a38d0
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_tutorials_FibonacciActionGoal_h
+#define _ROS_actionlib_tutorials_FibonacciActionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalID.h"
+#include "actionlib_tutorials/FibonacciGoal.h"
+
+namespace actionlib_tutorials
+{
+
+  class FibonacciActionGoal : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef actionlib_tutorials::FibonacciGoal _goal_type;
+      _goal_type goal;
+
+    FibonacciActionGoal():
+      header(),
+      goal_id(),
+      goal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->goal_id.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/FibonacciActionGoal"; };
+    const char * getMD5(){ return "006871c7fa1d0e3d5fe2226bf17b2a94"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib_tutorials/FibonacciActionResult.h b/otto_controller_source/Inc/actionlib_tutorials/FibonacciActionResult.h
new file mode 100644 (file)
index 0000000..adf0e5d
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_actionlib_tutorials_FibonacciActionResult_h
+#define _ROS_actionlib_tutorials_FibonacciActionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "actionlib_tutorials/FibonacciResult.h"
+
+namespace actionlib_tutorials
+{
+
+  class FibonacciActionResult : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef actionlib_tutorials::FibonacciResult _result_type;
+      _result_type result;
+
+    FibonacciActionResult():
+      header(),
+      status(),
+      result()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->result.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->result.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/FibonacciActionResult"; };
+    const char * getMD5(){ return "bee73a9fe29ae25e966e105f5553dd03"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib_tutorials/FibonacciFeedback.h b/otto_controller_source/Inc/actionlib_tutorials/FibonacciFeedback.h
new file mode 100644 (file)
index 0000000..4231ed1
--- /dev/null
@@ -0,0 +1,82 @@
+#ifndef _ROS_actionlib_tutorials_FibonacciFeedback_h
+#define _ROS_actionlib_tutorials_FibonacciFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib_tutorials
+{
+
+  class FibonacciFeedback : public ros::Msg
+  {
+    public:
+      uint32_t sequence_length;
+      typedef int32_t _sequence_type;
+      _sequence_type st_sequence;
+      _sequence_type * sequence;
+
+    FibonacciFeedback():
+      sequence_length(0), sequence(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->sequence_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->sequence_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->sequence_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->sequence_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->sequence_length);
+      for( uint32_t i = 0; i < sequence_length; i++){
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_sequencei;
+      u_sequencei.real = this->sequence[i];
+      *(outbuffer + offset + 0) = (u_sequencei.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_sequencei.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_sequencei.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_sequencei.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->sequence[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t sequence_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->sequence_length);
+      if(sequence_lengthT > sequence_length)
+        this->sequence = (int32_t*)realloc(this->sequence, sequence_lengthT * sizeof(int32_t));
+      sequence_length = sequence_lengthT;
+      for( uint32_t i = 0; i < sequence_length; i++){
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_st_sequence;
+      u_st_sequence.base = 0;
+      u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_sequence = u_st_sequence.real;
+      offset += sizeof(this->st_sequence);
+        memcpy( &(this->sequence[i]), &(this->st_sequence), sizeof(int32_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/FibonacciFeedback"; };
+    const char * getMD5(){ return "b81e37d2a31925a0e8ae261a8699cb79"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib_tutorials/FibonacciGoal.h b/otto_controller_source/Inc/actionlib_tutorials/FibonacciGoal.h
new file mode 100644 (file)
index 0000000..a4b05cc
--- /dev/null
@@ -0,0 +1,62 @@
+#ifndef _ROS_actionlib_tutorials_FibonacciGoal_h
+#define _ROS_actionlib_tutorials_FibonacciGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib_tutorials
+{
+
+  class FibonacciGoal : public ros::Msg
+  {
+    public:
+      typedef int32_t _order_type;
+      _order_type order;
+
+    FibonacciGoal():
+      order(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_order;
+      u_order.real = this->order;
+      *(outbuffer + offset + 0) = (u_order.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_order.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_order.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_order.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->order);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_order;
+      u_order.base = 0;
+      u_order.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_order.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_order.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_order.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->order = u_order.real;
+      offset += sizeof(this->order);
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/FibonacciGoal"; };
+    const char * getMD5(){ return "6889063349a00b249bd1661df429d822"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/actionlib_tutorials/FibonacciResult.h b/otto_controller_source/Inc/actionlib_tutorials/FibonacciResult.h
new file mode 100644 (file)
index 0000000..af8f045
--- /dev/null
@@ -0,0 +1,82 @@
+#ifndef _ROS_actionlib_tutorials_FibonacciResult_h
+#define _ROS_actionlib_tutorials_FibonacciResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace actionlib_tutorials
+{
+
+  class FibonacciResult : public ros::Msg
+  {
+    public:
+      uint32_t sequence_length;
+      typedef int32_t _sequence_type;
+      _sequence_type st_sequence;
+      _sequence_type * sequence;
+
+    FibonacciResult():
+      sequence_length(0), sequence(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->sequence_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->sequence_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->sequence_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->sequence_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->sequence_length);
+      for( uint32_t i = 0; i < sequence_length; i++){
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_sequencei;
+      u_sequencei.real = this->sequence[i];
+      *(outbuffer + offset + 0) = (u_sequencei.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_sequencei.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_sequencei.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_sequencei.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->sequence[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t sequence_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      sequence_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->sequence_length);
+      if(sequence_lengthT > sequence_length)
+        this->sequence = (int32_t*)realloc(this->sequence, sequence_lengthT * sizeof(int32_t));
+      sequence_length = sequence_lengthT;
+      for( uint32_t i = 0; i < sequence_length; i++){
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_st_sequence;
+      u_st_sequence.base = 0;
+      u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_sequence.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_sequence = u_st_sequence.real;
+      offset += sizeof(this->st_sequence);
+        memcpy( &(this->sequence[i]), &(this->st_sequence), sizeof(int32_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "actionlib_tutorials/FibonacciResult"; };
+    const char * getMD5(){ return "b81e37d2a31925a0e8ae261a8699cb79"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/bond/Constants.h b/otto_controller_source/Inc/bond/Constants.h
new file mode 100644 (file)
index 0000000..f9e8422
--- /dev/null
@@ -0,0 +1,44 @@
+#ifndef _ROS_bond_Constants_h
+#define _ROS_bond_Constants_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace bond
+{
+
+  class Constants : public ros::Msg
+  {
+    public:
+      enum { DEAD_PUBLISH_PERIOD =  0.05 };
+      enum { DEFAULT_CONNECT_TIMEOUT =  10.0 };
+      enum { DEFAULT_HEARTBEAT_TIMEOUT =  4.0 };
+      enum { DEFAULT_DISCONNECT_TIMEOUT =  2.0 };
+      enum { DEFAULT_HEARTBEAT_PERIOD =  1.0 };
+      enum { DISABLE_HEARTBEAT_TIMEOUT_PARAM = /bond_disable_heartbeat_timeout };
+
+    Constants()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return "bond/Constants"; };
+    const char * getMD5(){ return "6fc594dc1d7bd7919077042712f8c8b0"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/bond/Status.h b/otto_controller_source/Inc/bond/Status.h
new file mode 100644 (file)
index 0000000..05be601
--- /dev/null
@@ -0,0 +1,144 @@
+#ifndef _ROS_bond_Status_h
+#define _ROS_bond_Status_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace bond
+{
+
+  class Status : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef const char* _id_type;
+      _id_type id;
+      typedef const char* _instance_id_type;
+      _instance_id_type instance_id;
+      typedef bool _active_type;
+      _active_type active;
+      typedef float _heartbeat_timeout_type;
+      _heartbeat_timeout_type heartbeat_timeout;
+      typedef float _heartbeat_period_type;
+      _heartbeat_period_type heartbeat_period;
+
+    Status():
+      header(),
+      id(""),
+      instance_id(""),
+      active(0),
+      heartbeat_timeout(0),
+      heartbeat_period(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      uint32_t length_id = strlen(this->id);
+      varToArr(outbuffer + offset, length_id);
+      offset += 4;
+      memcpy(outbuffer + offset, this->id, length_id);
+      offset += length_id;
+      uint32_t length_instance_id = strlen(this->instance_id);
+      varToArr(outbuffer + offset, length_instance_id);
+      offset += 4;
+      memcpy(outbuffer + offset, this->instance_id, length_instance_id);
+      offset += length_instance_id;
+      union {
+        bool real;
+        uint8_t base;
+      } u_active;
+      u_active.real = this->active;
+      *(outbuffer + offset + 0) = (u_active.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->active);
+      union {
+        float real;
+        uint32_t base;
+      } u_heartbeat_timeout;
+      u_heartbeat_timeout.real = this->heartbeat_timeout;
+      *(outbuffer + offset + 0) = (u_heartbeat_timeout.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_heartbeat_timeout.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_heartbeat_timeout.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_heartbeat_timeout.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->heartbeat_timeout);
+      union {
+        float real;
+        uint32_t base;
+      } u_heartbeat_period;
+      u_heartbeat_period.real = this->heartbeat_period;
+      *(outbuffer + offset + 0) = (u_heartbeat_period.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_heartbeat_period.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_heartbeat_period.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_heartbeat_period.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->heartbeat_period);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t length_id;
+      arrToVar(length_id, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_id; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_id-1]=0;
+      this->id = (char *)(inbuffer + offset-1);
+      offset += length_id;
+      uint32_t length_instance_id;
+      arrToVar(length_instance_id, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_instance_id; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_instance_id-1]=0;
+      this->instance_id = (char *)(inbuffer + offset-1);
+      offset += length_instance_id;
+      union {
+        bool real;
+        uint8_t base;
+      } u_active;
+      u_active.base = 0;
+      u_active.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->active = u_active.real;
+      offset += sizeof(this->active);
+      union {
+        float real;
+        uint32_t base;
+      } u_heartbeat_timeout;
+      u_heartbeat_timeout.base = 0;
+      u_heartbeat_timeout.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_heartbeat_timeout.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_heartbeat_timeout.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_heartbeat_timeout.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->heartbeat_timeout = u_heartbeat_timeout.real;
+      offset += sizeof(this->heartbeat_timeout);
+      union {
+        float real;
+        uint32_t base;
+      } u_heartbeat_period;
+      u_heartbeat_period.base = 0;
+      u_heartbeat_period.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_heartbeat_period.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_heartbeat_period.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_heartbeat_period.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->heartbeat_period = u_heartbeat_period.real;
+      offset += sizeof(this->heartbeat_period);
+     return offset;
+    }
+
+    const char * getType(){ return "bond/Status"; };
+    const char * getMD5(){ return "eacc84bf5d65b6777d4c50f463dfb9c8"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/FollowJointTrajectoryAction.h b/otto_controller_source/Inc/control_msgs/FollowJointTrajectoryAction.h
new file mode 100644 (file)
index 0000000..03925a8
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_FollowJointTrajectoryAction_h
+#define _ROS_control_msgs_FollowJointTrajectoryAction_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "control_msgs/FollowJointTrajectoryActionGoal.h"
+#include "control_msgs/FollowJointTrajectoryActionResult.h"
+#include "control_msgs/FollowJointTrajectoryActionFeedback.h"
+
+namespace control_msgs
+{
+
+  class FollowJointTrajectoryAction : public ros::Msg
+  {
+    public:
+      typedef control_msgs::FollowJointTrajectoryActionGoal _action_goal_type;
+      _action_goal_type action_goal;
+      typedef control_msgs::FollowJointTrajectoryActionResult _action_result_type;
+      _action_result_type action_result;
+      typedef control_msgs::FollowJointTrajectoryActionFeedback _action_feedback_type;
+      _action_feedback_type action_feedback;
+
+    FollowJointTrajectoryAction():
+      action_goal(),
+      action_result(),
+      action_feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->action_goal.serialize(outbuffer + offset);
+      offset += this->action_result.serialize(outbuffer + offset);
+      offset += this->action_feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->action_goal.deserialize(inbuffer + offset);
+      offset += this->action_result.deserialize(inbuffer + offset);
+      offset += this->action_feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/FollowJointTrajectoryAction"; };
+    const char * getMD5(){ return "bc4f9b743838566551c0390c65f1a248"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/FollowJointTrajectoryActionFeedback.h b/otto_controller_source/Inc/control_msgs/FollowJointTrajectoryActionFeedback.h
new file mode 100644 (file)
index 0000000..998b0ee
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_FollowJointTrajectoryActionFeedback_h
+#define _ROS_control_msgs_FollowJointTrajectoryActionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "control_msgs/FollowJointTrajectoryFeedback.h"
+
+namespace control_msgs
+{
+
+  class FollowJointTrajectoryActionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef control_msgs::FollowJointTrajectoryFeedback _feedback_type;
+      _feedback_type feedback;
+
+    FollowJointTrajectoryActionFeedback():
+      header(),
+      status(),
+      feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/FollowJointTrajectoryActionFeedback"; };
+    const char * getMD5(){ return "d8920dc4eae9fc107e00999cce4be641"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/FollowJointTrajectoryActionGoal.h b/otto_controller_source/Inc/control_msgs/FollowJointTrajectoryActionGoal.h
new file mode 100644 (file)
index 0000000..20cc24b
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_FollowJointTrajectoryActionGoal_h
+#define _ROS_control_msgs_FollowJointTrajectoryActionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalID.h"
+#include "control_msgs/FollowJointTrajectoryGoal.h"
+
+namespace control_msgs
+{
+
+  class FollowJointTrajectoryActionGoal : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef control_msgs::FollowJointTrajectoryGoal _goal_type;
+      _goal_type goal;
+
+    FollowJointTrajectoryActionGoal():
+      header(),
+      goal_id(),
+      goal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->goal_id.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/FollowJointTrajectoryActionGoal"; };
+    const char * getMD5(){ return "cff5c1d533bf2f82dd0138d57f4304bb"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/FollowJointTrajectoryActionResult.h b/otto_controller_source/Inc/control_msgs/FollowJointTrajectoryActionResult.h
new file mode 100644 (file)
index 0000000..ba51328
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_FollowJointTrajectoryActionResult_h
+#define _ROS_control_msgs_FollowJointTrajectoryActionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "control_msgs/FollowJointTrajectoryResult.h"
+
+namespace control_msgs
+{
+
+  class FollowJointTrajectoryActionResult : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef control_msgs::FollowJointTrajectoryResult _result_type;
+      _result_type result;
+
+    FollowJointTrajectoryActionResult():
+      header(),
+      status(),
+      result()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->result.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->result.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/FollowJointTrajectoryActionResult"; };
+    const char * getMD5(){ return "c4fb3b000dc9da4fd99699380efcc5d9"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/FollowJointTrajectoryFeedback.h b/otto_controller_source/Inc/control_msgs/FollowJointTrajectoryFeedback.h
new file mode 100644 (file)
index 0000000..0e9208f
--- /dev/null
@@ -0,0 +1,97 @@
+#ifndef _ROS_control_msgs_FollowJointTrajectoryFeedback_h
+#define _ROS_control_msgs_FollowJointTrajectoryFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "trajectory_msgs/JointTrajectoryPoint.h"
+
+namespace control_msgs
+{
+
+  class FollowJointTrajectoryFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t joint_names_length;
+      typedef char* _joint_names_type;
+      _joint_names_type st_joint_names;
+      _joint_names_type * joint_names;
+      typedef trajectory_msgs::JointTrajectoryPoint _desired_type;
+      _desired_type desired;
+      typedef trajectory_msgs::JointTrajectoryPoint _actual_type;
+      _actual_type actual;
+      typedef trajectory_msgs::JointTrajectoryPoint _error_type;
+      _error_type error;
+
+    FollowJointTrajectoryFeedback():
+      header(),
+      joint_names_length(0), joint_names(NULL),
+      desired(),
+      actual(),
+      error()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->joint_names_length);
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_joint_namesi = strlen(this->joint_names[i]);
+      varToArr(outbuffer + offset, length_joint_namesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi);
+      offset += length_joint_namesi;
+      }
+      offset += this->desired.serialize(outbuffer + offset);
+      offset += this->actual.serialize(outbuffer + offset);
+      offset += this->error.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->joint_names_length);
+      if(joint_names_lengthT > joint_names_length)
+        this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*));
+      joint_names_length = joint_names_lengthT;
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_st_joint_names;
+      arrToVar(length_st_joint_names, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_joint_names-1]=0;
+      this->st_joint_names = (char *)(inbuffer + offset-1);
+      offset += length_st_joint_names;
+        memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*));
+      }
+      offset += this->desired.deserialize(inbuffer + offset);
+      offset += this->actual.deserialize(inbuffer + offset);
+      offset += this->error.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/FollowJointTrajectoryFeedback"; };
+    const char * getMD5(){ return "10817c60c2486ef6b33e97dcd87f4474"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/FollowJointTrajectoryGoal.h b/otto_controller_source/Inc/control_msgs/FollowJointTrajectoryGoal.h
new file mode 100644 (file)
index 0000000..02294ab
--- /dev/null
@@ -0,0 +1,119 @@
+#ifndef _ROS_control_msgs_FollowJointTrajectoryGoal_h
+#define _ROS_control_msgs_FollowJointTrajectoryGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "trajectory_msgs/JointTrajectory.h"
+#include "control_msgs/JointTolerance.h"
+#include "ros/duration.h"
+
+namespace control_msgs
+{
+
+  class FollowJointTrajectoryGoal : public ros::Msg
+  {
+    public:
+      typedef trajectory_msgs::JointTrajectory _trajectory_type;
+      _trajectory_type trajectory;
+      uint32_t path_tolerance_length;
+      typedef control_msgs::JointTolerance _path_tolerance_type;
+      _path_tolerance_type st_path_tolerance;
+      _path_tolerance_type * path_tolerance;
+      uint32_t goal_tolerance_length;
+      typedef control_msgs::JointTolerance _goal_tolerance_type;
+      _goal_tolerance_type st_goal_tolerance;
+      _goal_tolerance_type * goal_tolerance;
+      typedef ros::Duration _goal_time_tolerance_type;
+      _goal_time_tolerance_type goal_time_tolerance;
+
+    FollowJointTrajectoryGoal():
+      trajectory(),
+      path_tolerance_length(0), path_tolerance(NULL),
+      goal_tolerance_length(0), goal_tolerance(NULL),
+      goal_time_tolerance()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->trajectory.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->path_tolerance_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->path_tolerance_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->path_tolerance_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->path_tolerance_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->path_tolerance_length);
+      for( uint32_t i = 0; i < path_tolerance_length; i++){
+      offset += this->path_tolerance[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->goal_tolerance_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->goal_tolerance_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->goal_tolerance_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->goal_tolerance_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->goal_tolerance_length);
+      for( uint32_t i = 0; i < goal_tolerance_length; i++){
+      offset += this->goal_tolerance[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->goal_time_tolerance.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->goal_time_tolerance.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->goal_time_tolerance.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->goal_time_tolerance.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->goal_time_tolerance.sec);
+      *(outbuffer + offset + 0) = (this->goal_time_tolerance.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->goal_time_tolerance.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->goal_time_tolerance.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->goal_time_tolerance.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->goal_time_tolerance.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->trajectory.deserialize(inbuffer + offset);
+      uint32_t path_tolerance_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      path_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      path_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      path_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->path_tolerance_length);
+      if(path_tolerance_lengthT > path_tolerance_length)
+        this->path_tolerance = (control_msgs::JointTolerance*)realloc(this->path_tolerance, path_tolerance_lengthT * sizeof(control_msgs::JointTolerance));
+      path_tolerance_length = path_tolerance_lengthT;
+      for( uint32_t i = 0; i < path_tolerance_length; i++){
+      offset += this->st_path_tolerance.deserialize(inbuffer + offset);
+        memcpy( &(this->path_tolerance[i]), &(this->st_path_tolerance), sizeof(control_msgs::JointTolerance));
+      }
+      uint32_t goal_tolerance_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      goal_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      goal_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      goal_tolerance_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->goal_tolerance_length);
+      if(goal_tolerance_lengthT > goal_tolerance_length)
+        this->goal_tolerance = (control_msgs::JointTolerance*)realloc(this->goal_tolerance, goal_tolerance_lengthT * sizeof(control_msgs::JointTolerance));
+      goal_tolerance_length = goal_tolerance_lengthT;
+      for( uint32_t i = 0; i < goal_tolerance_length; i++){
+      offset += this->st_goal_tolerance.deserialize(inbuffer + offset);
+        memcpy( &(this->goal_tolerance[i]), &(this->st_goal_tolerance), sizeof(control_msgs::JointTolerance));
+      }
+      this->goal_time_tolerance.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->goal_time_tolerance.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->goal_time_tolerance.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->goal_time_tolerance.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->goal_time_tolerance.sec);
+      this->goal_time_tolerance.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->goal_time_tolerance.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->goal_time_tolerance.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->goal_time_tolerance.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->goal_time_tolerance.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/FollowJointTrajectoryGoal"; };
+    const char * getMD5(){ return "69636787b6ecbde4d61d711979bc7ecb"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/FollowJointTrajectoryResult.h b/otto_controller_source/Inc/control_msgs/FollowJointTrajectoryResult.h
new file mode 100644 (file)
index 0000000..43082d0
--- /dev/null
@@ -0,0 +1,85 @@
+#ifndef _ROS_control_msgs_FollowJointTrajectoryResult_h
+#define _ROS_control_msgs_FollowJointTrajectoryResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace control_msgs
+{
+
+  class FollowJointTrajectoryResult : public ros::Msg
+  {
+    public:
+      typedef int32_t _error_code_type;
+      _error_code_type error_code;
+      typedef const char* _error_string_type;
+      _error_string_type error_string;
+      enum { SUCCESSFUL =  0 };
+      enum { INVALID_GOAL =  -1 };
+      enum { INVALID_JOINTS =  -2 };
+      enum { OLD_HEADER_TIMESTAMP =  -3 };
+      enum { PATH_TOLERANCE_VIOLATED =  -4 };
+      enum { GOAL_TOLERANCE_VIOLATED =  -5 };
+
+    FollowJointTrajectoryResult():
+      error_code(0),
+      error_string("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_error_code;
+      u_error_code.real = this->error_code;
+      *(outbuffer + offset + 0) = (u_error_code.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_error_code.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_error_code.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_error_code.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->error_code);
+      uint32_t length_error_string = strlen(this->error_string);
+      varToArr(outbuffer + offset, length_error_string);
+      offset += 4;
+      memcpy(outbuffer + offset, this->error_string, length_error_string);
+      offset += length_error_string;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_error_code;
+      u_error_code.base = 0;
+      u_error_code.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_error_code.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_error_code.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_error_code.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->error_code = u_error_code.real;
+      offset += sizeof(this->error_code);
+      uint32_t length_error_string;
+      arrToVar(length_error_string, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_error_string; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_error_string-1]=0;
+      this->error_string = (char *)(inbuffer + offset-1);
+      offset += length_error_string;
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/FollowJointTrajectoryResult"; };
+    const char * getMD5(){ return "493383b18409bfb604b4e26c676401d2"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/GripperCommand.h b/otto_controller_source/Inc/control_msgs/GripperCommand.h
new file mode 100644 (file)
index 0000000..701bcb8
--- /dev/null
@@ -0,0 +1,48 @@
+#ifndef _ROS_control_msgs_GripperCommand_h
+#define _ROS_control_msgs_GripperCommand_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace control_msgs
+{
+
+  class GripperCommand : public ros::Msg
+  {
+    public:
+      typedef float _position_type;
+      _position_type position;
+      typedef float _max_effort_type;
+      _max_effort_type max_effort;
+
+    GripperCommand():
+      position(0),
+      max_effort(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += serializeAvrFloat64(outbuffer + offset, this->position);
+      offset += serializeAvrFloat64(outbuffer + offset, this->max_effort);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->position));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->max_effort));
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/GripperCommand"; };
+    const char * getMD5(){ return "680acaff79486f017132a7f198d40f08"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/GripperCommandAction.h b/otto_controller_source/Inc/control_msgs/GripperCommandAction.h
new file mode 100644 (file)
index 0000000..2dcc229
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_GripperCommandAction_h
+#define _ROS_control_msgs_GripperCommandAction_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "control_msgs/GripperCommandActionGoal.h"
+#include "control_msgs/GripperCommandActionResult.h"
+#include "control_msgs/GripperCommandActionFeedback.h"
+
+namespace control_msgs
+{
+
+  class GripperCommandAction : public ros::Msg
+  {
+    public:
+      typedef control_msgs::GripperCommandActionGoal _action_goal_type;
+      _action_goal_type action_goal;
+      typedef control_msgs::GripperCommandActionResult _action_result_type;
+      _action_result_type action_result;
+      typedef control_msgs::GripperCommandActionFeedback _action_feedback_type;
+      _action_feedback_type action_feedback;
+
+    GripperCommandAction():
+      action_goal(),
+      action_result(),
+      action_feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->action_goal.serialize(outbuffer + offset);
+      offset += this->action_result.serialize(outbuffer + offset);
+      offset += this->action_feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->action_goal.deserialize(inbuffer + offset);
+      offset += this->action_result.deserialize(inbuffer + offset);
+      offset += this->action_feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/GripperCommandAction"; };
+    const char * getMD5(){ return "950b2a6ebe831f5d4f4ceaba3d8be01e"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/GripperCommandActionFeedback.h b/otto_controller_source/Inc/control_msgs/GripperCommandActionFeedback.h
new file mode 100644 (file)
index 0000000..6053c37
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_GripperCommandActionFeedback_h
+#define _ROS_control_msgs_GripperCommandActionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "control_msgs/GripperCommandFeedback.h"
+
+namespace control_msgs
+{
+
+  class GripperCommandActionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef control_msgs::GripperCommandFeedback _feedback_type;
+      _feedback_type feedback;
+
+    GripperCommandActionFeedback():
+      header(),
+      status(),
+      feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/GripperCommandActionFeedback"; };
+    const char * getMD5(){ return "653dff30c045f5e6ff3feb3409f4558d"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/GripperCommandActionGoal.h b/otto_controller_source/Inc/control_msgs/GripperCommandActionGoal.h
new file mode 100644 (file)
index 0000000..6c91889
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_GripperCommandActionGoal_h
+#define _ROS_control_msgs_GripperCommandActionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalID.h"
+#include "control_msgs/GripperCommandGoal.h"
+
+namespace control_msgs
+{
+
+  class GripperCommandActionGoal : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef control_msgs::GripperCommandGoal _goal_type;
+      _goal_type goal;
+
+    GripperCommandActionGoal():
+      header(),
+      goal_id(),
+      goal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->goal_id.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/GripperCommandActionGoal"; };
+    const char * getMD5(){ return "aa581f648a35ed681db2ec0bf7a82bea"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/GripperCommandActionResult.h b/otto_controller_source/Inc/control_msgs/GripperCommandActionResult.h
new file mode 100644 (file)
index 0000000..780c8e4
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_GripperCommandActionResult_h
+#define _ROS_control_msgs_GripperCommandActionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "control_msgs/GripperCommandResult.h"
+
+namespace control_msgs
+{
+
+  class GripperCommandActionResult : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef control_msgs::GripperCommandResult _result_type;
+      _result_type result;
+
+    GripperCommandActionResult():
+      header(),
+      status(),
+      result()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->result.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->result.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/GripperCommandActionResult"; };
+    const char * getMD5(){ return "143702cb2df0f163c5283cedc5efc6b6"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/GripperCommandFeedback.h b/otto_controller_source/Inc/control_msgs/GripperCommandFeedback.h
new file mode 100644 (file)
index 0000000..3c12b7a
--- /dev/null
@@ -0,0 +1,84 @@
+#ifndef _ROS_control_msgs_GripperCommandFeedback_h
+#define _ROS_control_msgs_GripperCommandFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace control_msgs
+{
+
+  class GripperCommandFeedback : public ros::Msg
+  {
+    public:
+      typedef float _position_type;
+      _position_type position;
+      typedef float _effort_type;
+      _effort_type effort;
+      typedef bool _stalled_type;
+      _stalled_type stalled;
+      typedef bool _reached_goal_type;
+      _reached_goal_type reached_goal;
+
+    GripperCommandFeedback():
+      position(0),
+      effort(0),
+      stalled(0),
+      reached_goal(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += serializeAvrFloat64(outbuffer + offset, this->position);
+      offset += serializeAvrFloat64(outbuffer + offset, this->effort);
+      union {
+        bool real;
+        uint8_t base;
+      } u_stalled;
+      u_stalled.real = this->stalled;
+      *(outbuffer + offset + 0) = (u_stalled.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->stalled);
+      union {
+        bool real;
+        uint8_t base;
+      } u_reached_goal;
+      u_reached_goal.real = this->reached_goal;
+      *(outbuffer + offset + 0) = (u_reached_goal.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->reached_goal);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->position));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->effort));
+      union {
+        bool real;
+        uint8_t base;
+      } u_stalled;
+      u_stalled.base = 0;
+      u_stalled.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->stalled = u_stalled.real;
+      offset += sizeof(this->stalled);
+      union {
+        bool real;
+        uint8_t base;
+      } u_reached_goal;
+      u_reached_goal.base = 0;
+      u_reached_goal.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->reached_goal = u_reached_goal.real;
+      offset += sizeof(this->reached_goal);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/GripperCommandFeedback"; };
+    const char * getMD5(){ return "e4cbff56d3562bcf113da5a5adeef91f"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/GripperCommandGoal.h b/otto_controller_source/Inc/control_msgs/GripperCommandGoal.h
new file mode 100644 (file)
index 0000000..8703b96
--- /dev/null
@@ -0,0 +1,44 @@
+#ifndef _ROS_control_msgs_GripperCommandGoal_h
+#define _ROS_control_msgs_GripperCommandGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "control_msgs/GripperCommand.h"
+
+namespace control_msgs
+{
+
+  class GripperCommandGoal : public ros::Msg
+  {
+    public:
+      typedef control_msgs::GripperCommand _command_type;
+      _command_type command;
+
+    GripperCommandGoal():
+      command()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->command.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->command.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/GripperCommandGoal"; };
+    const char * getMD5(){ return "86fd82f4ddc48a4cb6856cfa69217e43"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/GripperCommandResult.h b/otto_controller_source/Inc/control_msgs/GripperCommandResult.h
new file mode 100644 (file)
index 0000000..4d29d38
--- /dev/null
@@ -0,0 +1,84 @@
+#ifndef _ROS_control_msgs_GripperCommandResult_h
+#define _ROS_control_msgs_GripperCommandResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace control_msgs
+{
+
+  class GripperCommandResult : public ros::Msg
+  {
+    public:
+      typedef float _position_type;
+      _position_type position;
+      typedef float _effort_type;
+      _effort_type effort;
+      typedef bool _stalled_type;
+      _stalled_type stalled;
+      typedef bool _reached_goal_type;
+      _reached_goal_type reached_goal;
+
+    GripperCommandResult():
+      position(0),
+      effort(0),
+      stalled(0),
+      reached_goal(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += serializeAvrFloat64(outbuffer + offset, this->position);
+      offset += serializeAvrFloat64(outbuffer + offset, this->effort);
+      union {
+        bool real;
+        uint8_t base;
+      } u_stalled;
+      u_stalled.real = this->stalled;
+      *(outbuffer + offset + 0) = (u_stalled.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->stalled);
+      union {
+        bool real;
+        uint8_t base;
+      } u_reached_goal;
+      u_reached_goal.real = this->reached_goal;
+      *(outbuffer + offset + 0) = (u_reached_goal.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->reached_goal);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->position));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->effort));
+      union {
+        bool real;
+        uint8_t base;
+      } u_stalled;
+      u_stalled.base = 0;
+      u_stalled.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->stalled = u_stalled.real;
+      offset += sizeof(this->stalled);
+      union {
+        bool real;
+        uint8_t base;
+      } u_reached_goal;
+      u_reached_goal.base = 0;
+      u_reached_goal.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->reached_goal = u_reached_goal.real;
+      offset += sizeof(this->reached_goal);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/GripperCommandResult"; };
+    const char * getMD5(){ return "e4cbff56d3562bcf113da5a5adeef91f"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/JointControllerState.h b/otto_controller_source/Inc/control_msgs/JointControllerState.h
new file mode 100644 (file)
index 0000000..d4e2d07
--- /dev/null
@@ -0,0 +1,112 @@
+#ifndef _ROS_control_msgs_JointControllerState_h
+#define _ROS_control_msgs_JointControllerState_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace control_msgs
+{
+
+  class JointControllerState : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef float _set_point_type;
+      _set_point_type set_point;
+      typedef float _process_value_type;
+      _process_value_type process_value;
+      typedef float _process_value_dot_type;
+      _process_value_dot_type process_value_dot;
+      typedef float _error_type;
+      _error_type error;
+      typedef float _time_step_type;
+      _time_step_type time_step;
+      typedef float _command_type;
+      _command_type command;
+      typedef float _p_type;
+      _p_type p;
+      typedef float _i_type;
+      _i_type i;
+      typedef float _d_type;
+      _d_type d;
+      typedef float _i_clamp_type;
+      _i_clamp_type i_clamp;
+      typedef bool _antiwindup_type;
+      _antiwindup_type antiwindup;
+
+    JointControllerState():
+      header(),
+      set_point(0),
+      process_value(0),
+      process_value_dot(0),
+      error(0),
+      time_step(0),
+      command(0),
+      p(0),
+      i(0),
+      d(0),
+      i_clamp(0),
+      antiwindup(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += serializeAvrFloat64(outbuffer + offset, this->set_point);
+      offset += serializeAvrFloat64(outbuffer + offset, this->process_value);
+      offset += serializeAvrFloat64(outbuffer + offset, this->process_value_dot);
+      offset += serializeAvrFloat64(outbuffer + offset, this->error);
+      offset += serializeAvrFloat64(outbuffer + offset, this->time_step);
+      offset += serializeAvrFloat64(outbuffer + offset, this->command);
+      offset += serializeAvrFloat64(outbuffer + offset, this->p);
+      offset += serializeAvrFloat64(outbuffer + offset, this->i);
+      offset += serializeAvrFloat64(outbuffer + offset, this->d);
+      offset += serializeAvrFloat64(outbuffer + offset, this->i_clamp);
+      union {
+        bool real;
+        uint8_t base;
+      } u_antiwindup;
+      u_antiwindup.real = this->antiwindup;
+      *(outbuffer + offset + 0) = (u_antiwindup.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->antiwindup);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->set_point));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->process_value));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->process_value_dot));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->error));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->time_step));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->command));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->p));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->i));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->d));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->i_clamp));
+      union {
+        bool real;
+        uint8_t base;
+      } u_antiwindup;
+      u_antiwindup.base = 0;
+      u_antiwindup.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->antiwindup = u_antiwindup.real;
+      offset += sizeof(this->antiwindup);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/JointControllerState"; };
+    const char * getMD5(){ return "987ad85e4756f3aef7f1e5e7fe0595d1"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/JointJog.h b/otto_controller_source/Inc/control_msgs/JointJog.h
new file mode 100644 (file)
index 0000000..60aa943
--- /dev/null
@@ -0,0 +1,136 @@
+#ifndef _ROS_control_msgs_JointJog_h
+#define _ROS_control_msgs_JointJog_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace control_msgs
+{
+
+  class JointJog : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t joint_names_length;
+      typedef char* _joint_names_type;
+      _joint_names_type st_joint_names;
+      _joint_names_type * joint_names;
+      uint32_t displacements_length;
+      typedef float _displacements_type;
+      _displacements_type st_displacements;
+      _displacements_type * displacements;
+      uint32_t velocities_length;
+      typedef float _velocities_type;
+      _velocities_type st_velocities;
+      _velocities_type * velocities;
+      typedef float _duration_type;
+      _duration_type duration;
+
+    JointJog():
+      header(),
+      joint_names_length(0), joint_names(NULL),
+      displacements_length(0), displacements(NULL),
+      velocities_length(0), velocities(NULL),
+      duration(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->joint_names_length);
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_joint_namesi = strlen(this->joint_names[i]);
+      varToArr(outbuffer + offset, length_joint_namesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi);
+      offset += length_joint_namesi;
+      }
+      *(outbuffer + offset + 0) = (this->displacements_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->displacements_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->displacements_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->displacements_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->displacements_length);
+      for( uint32_t i = 0; i < displacements_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->displacements[i]);
+      }
+      *(outbuffer + offset + 0) = (this->velocities_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->velocities_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->velocities_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->velocities_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->velocities_length);
+      for( uint32_t i = 0; i < velocities_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->velocities[i]);
+      }
+      offset += serializeAvrFloat64(outbuffer + offset, this->duration);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->joint_names_length);
+      if(joint_names_lengthT > joint_names_length)
+        this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*));
+      joint_names_length = joint_names_lengthT;
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_st_joint_names;
+      arrToVar(length_st_joint_names, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_joint_names-1]=0;
+      this->st_joint_names = (char *)(inbuffer + offset-1);
+      offset += length_st_joint_names;
+        memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*));
+      }
+      uint32_t displacements_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      displacements_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      displacements_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      displacements_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->displacements_length);
+      if(displacements_lengthT > displacements_length)
+        this->displacements = (float*)realloc(this->displacements, displacements_lengthT * sizeof(float));
+      displacements_length = displacements_lengthT;
+      for( uint32_t i = 0; i < displacements_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_displacements));
+        memcpy( &(this->displacements[i]), &(this->st_displacements), sizeof(float));
+      }
+      uint32_t velocities_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->velocities_length);
+      if(velocities_lengthT > velocities_length)
+        this->velocities = (float*)realloc(this->velocities, velocities_lengthT * sizeof(float));
+      velocities_length = velocities_lengthT;
+      for( uint32_t i = 0; i < velocities_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_velocities));
+        memcpy( &(this->velocities[i]), &(this->st_velocities), sizeof(float));
+      }
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->duration));
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/JointJog"; };
+    const char * getMD5(){ return "1685da700c8c2e1254afc92a5fb89c96"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/JointTolerance.h b/otto_controller_source/Inc/control_msgs/JointTolerance.h
new file mode 100644 (file)
index 0000000..0b8b362
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef _ROS_control_msgs_JointTolerance_h
+#define _ROS_control_msgs_JointTolerance_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace control_msgs
+{
+
+  class JointTolerance : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef float _position_type;
+      _position_type position;
+      typedef float _velocity_type;
+      _velocity_type velocity;
+      typedef float _acceleration_type;
+      _acceleration_type acceleration;
+
+    JointTolerance():
+      name(""),
+      position(0),
+      velocity(0),
+      acceleration(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      offset += serializeAvrFloat64(outbuffer + offset, this->position);
+      offset += serializeAvrFloat64(outbuffer + offset, this->velocity);
+      offset += serializeAvrFloat64(outbuffer + offset, this->acceleration);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->position));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->velocity));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->acceleration));
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/JointTolerance"; };
+    const char * getMD5(){ return "f544fe9c16cf04547e135dd6063ff5be"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/JointTrajectoryAction.h b/otto_controller_source/Inc/control_msgs/JointTrajectoryAction.h
new file mode 100644 (file)
index 0000000..0a71a64
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_JointTrajectoryAction_h
+#define _ROS_control_msgs_JointTrajectoryAction_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "control_msgs/JointTrajectoryActionGoal.h"
+#include "control_msgs/JointTrajectoryActionResult.h"
+#include "control_msgs/JointTrajectoryActionFeedback.h"
+
+namespace control_msgs
+{
+
+  class JointTrajectoryAction : public ros::Msg
+  {
+    public:
+      typedef control_msgs::JointTrajectoryActionGoal _action_goal_type;
+      _action_goal_type action_goal;
+      typedef control_msgs::JointTrajectoryActionResult _action_result_type;
+      _action_result_type action_result;
+      typedef control_msgs::JointTrajectoryActionFeedback _action_feedback_type;
+      _action_feedback_type action_feedback;
+
+    JointTrajectoryAction():
+      action_goal(),
+      action_result(),
+      action_feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->action_goal.serialize(outbuffer + offset);
+      offset += this->action_result.serialize(outbuffer + offset);
+      offset += this->action_feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->action_goal.deserialize(inbuffer + offset);
+      offset += this->action_result.deserialize(inbuffer + offset);
+      offset += this->action_feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/JointTrajectoryAction"; };
+    const char * getMD5(){ return "a04ba3ee8f6a2d0985a6aeaf23d9d7ad"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/JointTrajectoryActionFeedback.h b/otto_controller_source/Inc/control_msgs/JointTrajectoryActionFeedback.h
new file mode 100644 (file)
index 0000000..e8f5be4
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_JointTrajectoryActionFeedback_h
+#define _ROS_control_msgs_JointTrajectoryActionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "control_msgs/JointTrajectoryFeedback.h"
+
+namespace control_msgs
+{
+
+  class JointTrajectoryActionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef control_msgs::JointTrajectoryFeedback _feedback_type;
+      _feedback_type feedback;
+
+    JointTrajectoryActionFeedback():
+      header(),
+      status(),
+      feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/JointTrajectoryActionFeedback"; };
+    const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/JointTrajectoryActionGoal.h b/otto_controller_source/Inc/control_msgs/JointTrajectoryActionGoal.h
new file mode 100644 (file)
index 0000000..268d21d
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_JointTrajectoryActionGoal_h
+#define _ROS_control_msgs_JointTrajectoryActionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalID.h"
+#include "control_msgs/JointTrajectoryGoal.h"
+
+namespace control_msgs
+{
+
+  class JointTrajectoryActionGoal : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef control_msgs::JointTrajectoryGoal _goal_type;
+      _goal_type goal;
+
+    JointTrajectoryActionGoal():
+      header(),
+      goal_id(),
+      goal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->goal_id.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/JointTrajectoryActionGoal"; };
+    const char * getMD5(){ return "a99e83ef6185f9fdd7693efe99623a86"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/JointTrajectoryActionResult.h b/otto_controller_source/Inc/control_msgs/JointTrajectoryActionResult.h
new file mode 100644 (file)
index 0000000..41cb6b4
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_JointTrajectoryActionResult_h
+#define _ROS_control_msgs_JointTrajectoryActionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "control_msgs/JointTrajectoryResult.h"
+
+namespace control_msgs
+{
+
+  class JointTrajectoryActionResult : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef control_msgs::JointTrajectoryResult _result_type;
+      _result_type result;
+
+    JointTrajectoryActionResult():
+      header(),
+      status(),
+      result()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->result.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->result.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/JointTrajectoryActionResult"; };
+    const char * getMD5(){ return "1eb06eeff08fa7ea874431638cb52332"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/JointTrajectoryControllerState.h b/otto_controller_source/Inc/control_msgs/JointTrajectoryControllerState.h
new file mode 100644 (file)
index 0000000..cdb3128
--- /dev/null
@@ -0,0 +1,97 @@
+#ifndef _ROS_control_msgs_JointTrajectoryControllerState_h
+#define _ROS_control_msgs_JointTrajectoryControllerState_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "trajectory_msgs/JointTrajectoryPoint.h"
+
+namespace control_msgs
+{
+
+  class JointTrajectoryControllerState : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t joint_names_length;
+      typedef char* _joint_names_type;
+      _joint_names_type st_joint_names;
+      _joint_names_type * joint_names;
+      typedef trajectory_msgs::JointTrajectoryPoint _desired_type;
+      _desired_type desired;
+      typedef trajectory_msgs::JointTrajectoryPoint _actual_type;
+      _actual_type actual;
+      typedef trajectory_msgs::JointTrajectoryPoint _error_type;
+      _error_type error;
+
+    JointTrajectoryControllerState():
+      header(),
+      joint_names_length(0), joint_names(NULL),
+      desired(),
+      actual(),
+      error()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->joint_names_length);
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_joint_namesi = strlen(this->joint_names[i]);
+      varToArr(outbuffer + offset, length_joint_namesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi);
+      offset += length_joint_namesi;
+      }
+      offset += this->desired.serialize(outbuffer + offset);
+      offset += this->actual.serialize(outbuffer + offset);
+      offset += this->error.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->joint_names_length);
+      if(joint_names_lengthT > joint_names_length)
+        this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*));
+      joint_names_length = joint_names_lengthT;
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_st_joint_names;
+      arrToVar(length_st_joint_names, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_joint_names-1]=0;
+      this->st_joint_names = (char *)(inbuffer + offset-1);
+      offset += length_st_joint_names;
+        memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*));
+      }
+      offset += this->desired.deserialize(inbuffer + offset);
+      offset += this->actual.deserialize(inbuffer + offset);
+      offset += this->error.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/JointTrajectoryControllerState"; };
+    const char * getMD5(){ return "10817c60c2486ef6b33e97dcd87f4474"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/JointTrajectoryFeedback.h b/otto_controller_source/Inc/control_msgs/JointTrajectoryFeedback.h
new file mode 100644 (file)
index 0000000..0f84732
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _ROS_control_msgs_JointTrajectoryFeedback_h
+#define _ROS_control_msgs_JointTrajectoryFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace control_msgs
+{
+
+  class JointTrajectoryFeedback : public ros::Msg
+  {
+    public:
+
+    JointTrajectoryFeedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/JointTrajectoryFeedback"; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/JointTrajectoryGoal.h b/otto_controller_source/Inc/control_msgs/JointTrajectoryGoal.h
new file mode 100644 (file)
index 0000000..8e82c62
--- /dev/null
@@ -0,0 +1,44 @@
+#ifndef _ROS_control_msgs_JointTrajectoryGoal_h
+#define _ROS_control_msgs_JointTrajectoryGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "trajectory_msgs/JointTrajectory.h"
+
+namespace control_msgs
+{
+
+  class JointTrajectoryGoal : public ros::Msg
+  {
+    public:
+      typedef trajectory_msgs::JointTrajectory _trajectory_type;
+      _trajectory_type trajectory;
+
+    JointTrajectoryGoal():
+      trajectory()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->trajectory.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->trajectory.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/JointTrajectoryGoal"; };
+    const char * getMD5(){ return "2a0eff76c870e8595636c2a562ca298e"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/JointTrajectoryResult.h b/otto_controller_source/Inc/control_msgs/JointTrajectoryResult.h
new file mode 100644 (file)
index 0000000..c1bde7f
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _ROS_control_msgs_JointTrajectoryResult_h
+#define _ROS_control_msgs_JointTrajectoryResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace control_msgs
+{
+
+  class JointTrajectoryResult : public ros::Msg
+  {
+    public:
+
+    JointTrajectoryResult()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/JointTrajectoryResult"; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/PidState.h b/otto_controller_source/Inc/control_msgs/PidState.h
new file mode 100644 (file)
index 0000000..1cd216f
--- /dev/null
@@ -0,0 +1,123 @@
+#ifndef _ROS_control_msgs_PidState_h
+#define _ROS_control_msgs_PidState_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "ros/duration.h"
+
+namespace control_msgs
+{
+
+  class PidState : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef ros::Duration _timestep_type;
+      _timestep_type timestep;
+      typedef float _error_type;
+      _error_type error;
+      typedef float _error_dot_type;
+      _error_dot_type error_dot;
+      typedef float _p_error_type;
+      _p_error_type p_error;
+      typedef float _i_error_type;
+      _i_error_type i_error;
+      typedef float _d_error_type;
+      _d_error_type d_error;
+      typedef float _p_term_type;
+      _p_term_type p_term;
+      typedef float _i_term_type;
+      _i_term_type i_term;
+      typedef float _d_term_type;
+      _d_term_type d_term;
+      typedef float _i_max_type;
+      _i_max_type i_max;
+      typedef float _i_min_type;
+      _i_min_type i_min;
+      typedef float _output_type;
+      _output_type output;
+
+    PidState():
+      header(),
+      timestep(),
+      error(0),
+      error_dot(0),
+      p_error(0),
+      i_error(0),
+      d_error(0),
+      p_term(0),
+      i_term(0),
+      d_term(0),
+      i_max(0),
+      i_min(0),
+      output(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->timestep.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->timestep.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->timestep.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->timestep.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->timestep.sec);
+      *(outbuffer + offset + 0) = (this->timestep.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->timestep.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->timestep.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->timestep.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->timestep.nsec);
+      offset += serializeAvrFloat64(outbuffer + offset, this->error);
+      offset += serializeAvrFloat64(outbuffer + offset, this->error_dot);
+      offset += serializeAvrFloat64(outbuffer + offset, this->p_error);
+      offset += serializeAvrFloat64(outbuffer + offset, this->i_error);
+      offset += serializeAvrFloat64(outbuffer + offset, this->d_error);
+      offset += serializeAvrFloat64(outbuffer + offset, this->p_term);
+      offset += serializeAvrFloat64(outbuffer + offset, this->i_term);
+      offset += serializeAvrFloat64(outbuffer + offset, this->d_term);
+      offset += serializeAvrFloat64(outbuffer + offset, this->i_max);
+      offset += serializeAvrFloat64(outbuffer + offset, this->i_min);
+      offset += serializeAvrFloat64(outbuffer + offset, this->output);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      this->timestep.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->timestep.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->timestep.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->timestep.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->timestep.sec);
+      this->timestep.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->timestep.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->timestep.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->timestep.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->timestep.nsec);
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->error));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->error_dot));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->p_error));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->i_error));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->d_error));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->p_term));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->i_term));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->d_term));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->i_max));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->i_min));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->output));
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/PidState"; };
+    const char * getMD5(){ return "b138ec00e886c10e73f27e8712252ea6"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/PointHeadAction.h b/otto_controller_source/Inc/control_msgs/PointHeadAction.h
new file mode 100644 (file)
index 0000000..5ab7b21
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_PointHeadAction_h
+#define _ROS_control_msgs_PointHeadAction_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "control_msgs/PointHeadActionGoal.h"
+#include "control_msgs/PointHeadActionResult.h"
+#include "control_msgs/PointHeadActionFeedback.h"
+
+namespace control_msgs
+{
+
+  class PointHeadAction : public ros::Msg
+  {
+    public:
+      typedef control_msgs::PointHeadActionGoal _action_goal_type;
+      _action_goal_type action_goal;
+      typedef control_msgs::PointHeadActionResult _action_result_type;
+      _action_result_type action_result;
+      typedef control_msgs::PointHeadActionFeedback _action_feedback_type;
+      _action_feedback_type action_feedback;
+
+    PointHeadAction():
+      action_goal(),
+      action_result(),
+      action_feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->action_goal.serialize(outbuffer + offset);
+      offset += this->action_result.serialize(outbuffer + offset);
+      offset += this->action_feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->action_goal.deserialize(inbuffer + offset);
+      offset += this->action_result.deserialize(inbuffer + offset);
+      offset += this->action_feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/PointHeadAction"; };
+    const char * getMD5(){ return "7252920f1243de1b741f14f214125371"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/PointHeadActionFeedback.h b/otto_controller_source/Inc/control_msgs/PointHeadActionFeedback.h
new file mode 100644 (file)
index 0000000..c9f1cdf
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_PointHeadActionFeedback_h
+#define _ROS_control_msgs_PointHeadActionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "control_msgs/PointHeadFeedback.h"
+
+namespace control_msgs
+{
+
+  class PointHeadActionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef control_msgs::PointHeadFeedback _feedback_type;
+      _feedback_type feedback;
+
+    PointHeadActionFeedback():
+      header(),
+      status(),
+      feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/PointHeadActionFeedback"; };
+    const char * getMD5(){ return "33c9244957176bbba97dd641119e8460"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/PointHeadActionGoal.h b/otto_controller_source/Inc/control_msgs/PointHeadActionGoal.h
new file mode 100644 (file)
index 0000000..95b5f4a
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_PointHeadActionGoal_h
+#define _ROS_control_msgs_PointHeadActionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalID.h"
+#include "control_msgs/PointHeadGoal.h"
+
+namespace control_msgs
+{
+
+  class PointHeadActionGoal : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef control_msgs::PointHeadGoal _goal_type;
+      _goal_type goal;
+
+    PointHeadActionGoal():
+      header(),
+      goal_id(),
+      goal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->goal_id.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/PointHeadActionGoal"; };
+    const char * getMD5(){ return "b53a8323d0ba7b310ba17a2d3a82a6b8"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/PointHeadActionResult.h b/otto_controller_source/Inc/control_msgs/PointHeadActionResult.h
new file mode 100644 (file)
index 0000000..15f6e6b
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_PointHeadActionResult_h
+#define _ROS_control_msgs_PointHeadActionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "control_msgs/PointHeadResult.h"
+
+namespace control_msgs
+{
+
+  class PointHeadActionResult : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef control_msgs::PointHeadResult _result_type;
+      _result_type result;
+
+    PointHeadActionResult():
+      header(),
+      status(),
+      result()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->result.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->result.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/PointHeadActionResult"; };
+    const char * getMD5(){ return "1eb06eeff08fa7ea874431638cb52332"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/PointHeadFeedback.h b/otto_controller_source/Inc/control_msgs/PointHeadFeedback.h
new file mode 100644 (file)
index 0000000..8624383
--- /dev/null
@@ -0,0 +1,43 @@
+#ifndef _ROS_control_msgs_PointHeadFeedback_h
+#define _ROS_control_msgs_PointHeadFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace control_msgs
+{
+
+  class PointHeadFeedback : public ros::Msg
+  {
+    public:
+      typedef float _pointing_angle_error_type;
+      _pointing_angle_error_type pointing_angle_error;
+
+    PointHeadFeedback():
+      pointing_angle_error(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += serializeAvrFloat64(outbuffer + offset, this->pointing_angle_error);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->pointing_angle_error));
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/PointHeadFeedback"; };
+    const char * getMD5(){ return "cce80d27fd763682da8805a73316cab4"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/PointHeadGoal.h b/otto_controller_source/Inc/control_msgs/PointHeadGoal.h
new file mode 100644 (file)
index 0000000..5158a16
--- /dev/null
@@ -0,0 +1,96 @@
+#ifndef _ROS_control_msgs_PointHeadGoal_h
+#define _ROS_control_msgs_PointHeadGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/PointStamped.h"
+#include "geometry_msgs/Vector3.h"
+#include "ros/duration.h"
+
+namespace control_msgs
+{
+
+  class PointHeadGoal : public ros::Msg
+  {
+    public:
+      typedef geometry_msgs::PointStamped _target_type;
+      _target_type target;
+      typedef geometry_msgs::Vector3 _pointing_axis_type;
+      _pointing_axis_type pointing_axis;
+      typedef const char* _pointing_frame_type;
+      _pointing_frame_type pointing_frame;
+      typedef ros::Duration _min_duration_type;
+      _min_duration_type min_duration;
+      typedef float _max_velocity_type;
+      _max_velocity_type max_velocity;
+
+    PointHeadGoal():
+      target(),
+      pointing_axis(),
+      pointing_frame(""),
+      min_duration(),
+      max_velocity(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->target.serialize(outbuffer + offset);
+      offset += this->pointing_axis.serialize(outbuffer + offset);
+      uint32_t length_pointing_frame = strlen(this->pointing_frame);
+      varToArr(outbuffer + offset, length_pointing_frame);
+      offset += 4;
+      memcpy(outbuffer + offset, this->pointing_frame, length_pointing_frame);
+      offset += length_pointing_frame;
+      *(outbuffer + offset + 0) = (this->min_duration.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->min_duration.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->min_duration.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->min_duration.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->min_duration.sec);
+      *(outbuffer + offset + 0) = (this->min_duration.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->min_duration.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->min_duration.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->min_duration.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->min_duration.nsec);
+      offset += serializeAvrFloat64(outbuffer + offset, this->max_velocity);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->target.deserialize(inbuffer + offset);
+      offset += this->pointing_axis.deserialize(inbuffer + offset);
+      uint32_t length_pointing_frame;
+      arrToVar(length_pointing_frame, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_pointing_frame; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_pointing_frame-1]=0;
+      this->pointing_frame = (char *)(inbuffer + offset-1);
+      offset += length_pointing_frame;
+      this->min_duration.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->min_duration.sec);
+      this->min_duration.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->min_duration.nsec);
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->max_velocity));
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/PointHeadGoal"; };
+    const char * getMD5(){ return "8b92b1cd5e06c8a94c917dc3209a4c1d"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/PointHeadResult.h b/otto_controller_source/Inc/control_msgs/PointHeadResult.h
new file mode 100644 (file)
index 0000000..9aa28f5
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _ROS_control_msgs_PointHeadResult_h
+#define _ROS_control_msgs_PointHeadResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace control_msgs
+{
+
+  class PointHeadResult : public ros::Msg
+  {
+    public:
+
+    PointHeadResult()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/PointHeadResult"; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/QueryCalibrationState.h b/otto_controller_source/Inc/control_msgs/QueryCalibrationState.h
new file mode 100644 (file)
index 0000000..0fd1a66
--- /dev/null
@@ -0,0 +1,88 @@
+#ifndef _ROS_SERVICE_QueryCalibrationState_h
+#define _ROS_SERVICE_QueryCalibrationState_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace control_msgs
+{
+
+static const char QUERYCALIBRATIONSTATE[] = "control_msgs/QueryCalibrationState";
+
+  class QueryCalibrationStateRequest : public ros::Msg
+  {
+    public:
+
+    QueryCalibrationStateRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return QUERYCALIBRATIONSTATE; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class QueryCalibrationStateResponse : public ros::Msg
+  {
+    public:
+      typedef bool _is_calibrated_type;
+      _is_calibrated_type is_calibrated;
+
+    QueryCalibrationStateResponse():
+      is_calibrated(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_is_calibrated;
+      u_is_calibrated.real = this->is_calibrated;
+      *(outbuffer + offset + 0) = (u_is_calibrated.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->is_calibrated);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_is_calibrated;
+      u_is_calibrated.base = 0;
+      u_is_calibrated.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->is_calibrated = u_is_calibrated.real;
+      offset += sizeof(this->is_calibrated);
+     return offset;
+    }
+
+    const char * getType(){ return QUERYCALIBRATIONSTATE; };
+    const char * getMD5(){ return "28af3beedcb84986b8e470dc5470507d"; };
+
+  };
+
+  class QueryCalibrationState {
+    public:
+    typedef QueryCalibrationStateRequest Request;
+    typedef QueryCalibrationStateResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/QueryTrajectoryState.h b/otto_controller_source/Inc/control_msgs/QueryTrajectoryState.h
new file mode 100644 (file)
index 0000000..aa3e9ed
--- /dev/null
@@ -0,0 +1,206 @@
+#ifndef _ROS_SERVICE_QueryTrajectoryState_h
+#define _ROS_SERVICE_QueryTrajectoryState_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/time.h"
+
+namespace control_msgs
+{
+
+static const char QUERYTRAJECTORYSTATE[] = "control_msgs/QueryTrajectoryState";
+
+  class QueryTrajectoryStateRequest : public ros::Msg
+  {
+    public:
+      typedef ros::Time _time_type;
+      _time_type time;
+
+    QueryTrajectoryStateRequest():
+      time()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->time.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->time.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->time.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->time.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->time.sec);
+      *(outbuffer + offset + 0) = (this->time.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->time.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->time.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->time.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->time.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->time.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->time.sec);
+      this->time.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->time.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return QUERYTRAJECTORYSTATE; };
+    const char * getMD5(){ return "556a4fb76023a469987922359d08a844"; };
+
+  };
+
+  class QueryTrajectoryStateResponse : public ros::Msg
+  {
+    public:
+      uint32_t name_length;
+      typedef char* _name_type;
+      _name_type st_name;
+      _name_type * name;
+      uint32_t position_length;
+      typedef float _position_type;
+      _position_type st_position;
+      _position_type * position;
+      uint32_t velocity_length;
+      typedef float _velocity_type;
+      _velocity_type st_velocity;
+      _velocity_type * velocity;
+      uint32_t acceleration_length;
+      typedef float _acceleration_type;
+      _acceleration_type st_acceleration;
+      _acceleration_type * acceleration;
+
+    QueryTrajectoryStateResponse():
+      name_length(0), name(NULL),
+      position_length(0), position(NULL),
+      velocity_length(0), velocity(NULL),
+      acceleration_length(0), acceleration(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->name_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->name_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->name_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->name_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->name_length);
+      for( uint32_t i = 0; i < name_length; i++){
+      uint32_t length_namei = strlen(this->name[i]);
+      varToArr(outbuffer + offset, length_namei);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name[i], length_namei);
+      offset += length_namei;
+      }
+      *(outbuffer + offset + 0) = (this->position_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->position_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->position_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->position_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->position_length);
+      for( uint32_t i = 0; i < position_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->position[i]);
+      }
+      *(outbuffer + offset + 0) = (this->velocity_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->velocity_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->velocity_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->velocity_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->velocity_length);
+      for( uint32_t i = 0; i < velocity_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->velocity[i]);
+      }
+      *(outbuffer + offset + 0) = (this->acceleration_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->acceleration_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->acceleration_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->acceleration_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->acceleration_length);
+      for( uint32_t i = 0; i < acceleration_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->acceleration[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t name_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->name_length);
+      if(name_lengthT > name_length)
+        this->name = (char**)realloc(this->name, name_lengthT * sizeof(char*));
+      name_length = name_lengthT;
+      for( uint32_t i = 0; i < name_length; i++){
+      uint32_t length_st_name;
+      arrToVar(length_st_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_name-1]=0;
+      this->st_name = (char *)(inbuffer + offset-1);
+      offset += length_st_name;
+        memcpy( &(this->name[i]), &(this->st_name), sizeof(char*));
+      }
+      uint32_t position_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      position_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      position_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      position_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->position_length);
+      if(position_lengthT > position_length)
+        this->position = (float*)realloc(this->position, position_lengthT * sizeof(float));
+      position_length = position_lengthT;
+      for( uint32_t i = 0; i < position_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_position));
+        memcpy( &(this->position[i]), &(this->st_position), sizeof(float));
+      }
+      uint32_t velocity_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->velocity_length);
+      if(velocity_lengthT > velocity_length)
+        this->velocity = (float*)realloc(this->velocity, velocity_lengthT * sizeof(float));
+      velocity_length = velocity_lengthT;
+      for( uint32_t i = 0; i < velocity_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_velocity));
+        memcpy( &(this->velocity[i]), &(this->st_velocity), sizeof(float));
+      }
+      uint32_t acceleration_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      acceleration_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      acceleration_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      acceleration_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->acceleration_length);
+      if(acceleration_lengthT > acceleration_length)
+        this->acceleration = (float*)realloc(this->acceleration, acceleration_lengthT * sizeof(float));
+      acceleration_length = acceleration_lengthT;
+      for( uint32_t i = 0; i < acceleration_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_acceleration));
+        memcpy( &(this->acceleration[i]), &(this->st_acceleration), sizeof(float));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return QUERYTRAJECTORYSTATE; };
+    const char * getMD5(){ return "1f1a6554ad060f44d013e71868403c1a"; };
+
+  };
+
+  class QueryTrajectoryState {
+    public:
+    typedef QueryTrajectoryStateRequest Request;
+    typedef QueryTrajectoryStateResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/SingleJointPositionAction.h b/otto_controller_source/Inc/control_msgs/SingleJointPositionAction.h
new file mode 100644 (file)
index 0000000..8858a51
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_SingleJointPositionAction_h
+#define _ROS_control_msgs_SingleJointPositionAction_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "control_msgs/SingleJointPositionActionGoal.h"
+#include "control_msgs/SingleJointPositionActionResult.h"
+#include "control_msgs/SingleJointPositionActionFeedback.h"
+
+namespace control_msgs
+{
+
+  class SingleJointPositionAction : public ros::Msg
+  {
+    public:
+      typedef control_msgs::SingleJointPositionActionGoal _action_goal_type;
+      _action_goal_type action_goal;
+      typedef control_msgs::SingleJointPositionActionResult _action_result_type;
+      _action_result_type action_result;
+      typedef control_msgs::SingleJointPositionActionFeedback _action_feedback_type;
+      _action_feedback_type action_feedback;
+
+    SingleJointPositionAction():
+      action_goal(),
+      action_result(),
+      action_feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->action_goal.serialize(outbuffer + offset);
+      offset += this->action_result.serialize(outbuffer + offset);
+      offset += this->action_feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->action_goal.deserialize(inbuffer + offset);
+      offset += this->action_result.deserialize(inbuffer + offset);
+      offset += this->action_feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/SingleJointPositionAction"; };
+    const char * getMD5(){ return "c4a786b7d53e5d0983decf967a5a779e"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/SingleJointPositionActionFeedback.h b/otto_controller_source/Inc/control_msgs/SingleJointPositionActionFeedback.h
new file mode 100644 (file)
index 0000000..8bb14c1
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_SingleJointPositionActionFeedback_h
+#define _ROS_control_msgs_SingleJointPositionActionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "control_msgs/SingleJointPositionFeedback.h"
+
+namespace control_msgs
+{
+
+  class SingleJointPositionActionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef control_msgs::SingleJointPositionFeedback _feedback_type;
+      _feedback_type feedback;
+
+    SingleJointPositionActionFeedback():
+      header(),
+      status(),
+      feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/SingleJointPositionActionFeedback"; };
+    const char * getMD5(){ return "3503b7cf8972f90d245850a5d8796cfa"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/SingleJointPositionActionGoal.h b/otto_controller_source/Inc/control_msgs/SingleJointPositionActionGoal.h
new file mode 100644 (file)
index 0000000..a5d9eb4
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_SingleJointPositionActionGoal_h
+#define _ROS_control_msgs_SingleJointPositionActionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalID.h"
+#include "control_msgs/SingleJointPositionGoal.h"
+
+namespace control_msgs
+{
+
+  class SingleJointPositionActionGoal : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef control_msgs::SingleJointPositionGoal _goal_type;
+      _goal_type goal;
+
+    SingleJointPositionActionGoal():
+      header(),
+      goal_id(),
+      goal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->goal_id.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/SingleJointPositionActionGoal"; };
+    const char * getMD5(){ return "4b0d3d091471663e17749c1d0db90f61"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/SingleJointPositionActionResult.h b/otto_controller_source/Inc/control_msgs/SingleJointPositionActionResult.h
new file mode 100644 (file)
index 0000000..aa98021
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_control_msgs_SingleJointPositionActionResult_h
+#define _ROS_control_msgs_SingleJointPositionActionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "control_msgs/SingleJointPositionResult.h"
+
+namespace control_msgs
+{
+
+  class SingleJointPositionActionResult : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef control_msgs::SingleJointPositionResult _result_type;
+      _result_type result;
+
+    SingleJointPositionActionResult():
+      header(),
+      status(),
+      result()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->result.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->result.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/SingleJointPositionActionResult"; };
+    const char * getMD5(){ return "1eb06eeff08fa7ea874431638cb52332"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/SingleJointPositionFeedback.h b/otto_controller_source/Inc/control_msgs/SingleJointPositionFeedback.h
new file mode 100644 (file)
index 0000000..e25abfe
--- /dev/null
@@ -0,0 +1,59 @@
+#ifndef _ROS_control_msgs_SingleJointPositionFeedback_h
+#define _ROS_control_msgs_SingleJointPositionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace control_msgs
+{
+
+  class SingleJointPositionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef float _position_type;
+      _position_type position;
+      typedef float _velocity_type;
+      _velocity_type velocity;
+      typedef float _error_type;
+      _error_type error;
+
+    SingleJointPositionFeedback():
+      header(),
+      position(0),
+      velocity(0),
+      error(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += serializeAvrFloat64(outbuffer + offset, this->position);
+      offset += serializeAvrFloat64(outbuffer + offset, this->velocity);
+      offset += serializeAvrFloat64(outbuffer + offset, this->error);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->position));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->velocity));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->error));
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/SingleJointPositionFeedback"; };
+    const char * getMD5(){ return "8cee65610a3d08e0a1bded82f146f1fd"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/SingleJointPositionGoal.h b/otto_controller_source/Inc/control_msgs/SingleJointPositionGoal.h
new file mode 100644 (file)
index 0000000..515c538
--- /dev/null
@@ -0,0 +1,72 @@
+#ifndef _ROS_control_msgs_SingleJointPositionGoal_h
+#define _ROS_control_msgs_SingleJointPositionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/duration.h"
+
+namespace control_msgs
+{
+
+  class SingleJointPositionGoal : public ros::Msg
+  {
+    public:
+      typedef float _position_type;
+      _position_type position;
+      typedef ros::Duration _min_duration_type;
+      _min_duration_type min_duration;
+      typedef float _max_velocity_type;
+      _max_velocity_type max_velocity;
+
+    SingleJointPositionGoal():
+      position(0),
+      min_duration(),
+      max_velocity(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += serializeAvrFloat64(outbuffer + offset, this->position);
+      *(outbuffer + offset + 0) = (this->min_duration.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->min_duration.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->min_duration.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->min_duration.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->min_duration.sec);
+      *(outbuffer + offset + 0) = (this->min_duration.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->min_duration.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->min_duration.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->min_duration.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->min_duration.nsec);
+      offset += serializeAvrFloat64(outbuffer + offset, this->max_velocity);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->position));
+      this->min_duration.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->min_duration.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->min_duration.sec);
+      this->min_duration.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->min_duration.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->min_duration.nsec);
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->max_velocity));
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/SingleJointPositionGoal"; };
+    const char * getMD5(){ return "fbaaa562a23a013fd5053e5f72cbb35c"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_msgs/SingleJointPositionResult.h b/otto_controller_source/Inc/control_msgs/SingleJointPositionResult.h
new file mode 100644 (file)
index 0000000..74f2952
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _ROS_control_msgs_SingleJointPositionResult_h
+#define _ROS_control_msgs_SingleJointPositionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace control_msgs
+{
+
+  class SingleJointPositionResult : public ros::Msg
+  {
+    public:
+
+    SingleJointPositionResult()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return "control_msgs/SingleJointPositionResult"; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/control_toolbox/SetPidGains.h b/otto_controller_source/Inc/control_toolbox/SetPidGains.h
new file mode 100644 (file)
index 0000000..3f86d8d
--- /dev/null
@@ -0,0 +1,108 @@
+#ifndef _ROS_SERVICE_SetPidGains_h
+#define _ROS_SERVICE_SetPidGains_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace control_toolbox
+{
+
+static const char SETPIDGAINS[] = "control_toolbox/SetPidGains";
+
+  class SetPidGainsRequest : public ros::Msg
+  {
+    public:
+      typedef float _p_type;
+      _p_type p;
+      typedef float _i_type;
+      _i_type i;
+      typedef float _d_type;
+      _d_type d;
+      typedef float _i_clamp_type;
+      _i_clamp_type i_clamp;
+      typedef bool _antiwindup_type;
+      _antiwindup_type antiwindup;
+
+    SetPidGainsRequest():
+      p(0),
+      i(0),
+      d(0),
+      i_clamp(0),
+      antiwindup(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += serializeAvrFloat64(outbuffer + offset, this->p);
+      offset += serializeAvrFloat64(outbuffer + offset, this->i);
+      offset += serializeAvrFloat64(outbuffer + offset, this->d);
+      offset += serializeAvrFloat64(outbuffer + offset, this->i_clamp);
+      union {
+        bool real;
+        uint8_t base;
+      } u_antiwindup;
+      u_antiwindup.real = this->antiwindup;
+      *(outbuffer + offset + 0) = (u_antiwindup.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->antiwindup);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->p));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->i));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->d));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->i_clamp));
+      union {
+        bool real;
+        uint8_t base;
+      } u_antiwindup;
+      u_antiwindup.base = 0;
+      u_antiwindup.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->antiwindup = u_antiwindup.real;
+      offset += sizeof(this->antiwindup);
+     return offset;
+    }
+
+    const char * getType(){ return SETPIDGAINS; };
+    const char * getMD5(){ return "4a43159879643e60937bf2893b633607"; };
+
+  };
+
+  class SetPidGainsResponse : public ros::Msg
+  {
+    public:
+
+    SetPidGainsResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return SETPIDGAINS; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class SetPidGains {
+    public:
+    typedef SetPidGainsRequest Request;
+    typedef SetPidGainsResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/controller_manager_msgs/ControllerState.h b/otto_controller_source/Inc/controller_manager_msgs/ControllerState.h
new file mode 100644 (file)
index 0000000..d2cedba
--- /dev/null
@@ -0,0 +1,115 @@
+#ifndef _ROS_controller_manager_msgs_ControllerState_h
+#define _ROS_controller_manager_msgs_ControllerState_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "controller_manager_msgs/HardwareInterfaceResources.h"
+
+namespace controller_manager_msgs
+{
+
+  class ControllerState : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef const char* _state_type;
+      _state_type state;
+      typedef const char* _type_type;
+      _type_type type;
+      uint32_t claimed_resources_length;
+      typedef controller_manager_msgs::HardwareInterfaceResources _claimed_resources_type;
+      _claimed_resources_type st_claimed_resources;
+      _claimed_resources_type * claimed_resources;
+
+    ControllerState():
+      name(""),
+      state(""),
+      type(""),
+      claimed_resources_length(0), claimed_resources(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      uint32_t length_state = strlen(this->state);
+      varToArr(outbuffer + offset, length_state);
+      offset += 4;
+      memcpy(outbuffer + offset, this->state, length_state);
+      offset += length_state;
+      uint32_t length_type = strlen(this->type);
+      varToArr(outbuffer + offset, length_type);
+      offset += 4;
+      memcpy(outbuffer + offset, this->type, length_type);
+      offset += length_type;
+      *(outbuffer + offset + 0) = (this->claimed_resources_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->claimed_resources_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->claimed_resources_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->claimed_resources_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->claimed_resources_length);
+      for( uint32_t i = 0; i < claimed_resources_length; i++){
+      offset += this->claimed_resources[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      uint32_t length_state;
+      arrToVar(length_state, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_state; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_state-1]=0;
+      this->state = (char *)(inbuffer + offset-1);
+      offset += length_state;
+      uint32_t length_type;
+      arrToVar(length_type, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_type; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_type-1]=0;
+      this->type = (char *)(inbuffer + offset-1);
+      offset += length_type;
+      uint32_t claimed_resources_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      claimed_resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      claimed_resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      claimed_resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->claimed_resources_length);
+      if(claimed_resources_lengthT > claimed_resources_length)
+        this->claimed_resources = (controller_manager_msgs::HardwareInterfaceResources*)realloc(this->claimed_resources, claimed_resources_lengthT * sizeof(controller_manager_msgs::HardwareInterfaceResources));
+      claimed_resources_length = claimed_resources_lengthT;
+      for( uint32_t i = 0; i < claimed_resources_length; i++){
+      offset += this->st_claimed_resources.deserialize(inbuffer + offset);
+        memcpy( &(this->claimed_resources[i]), &(this->st_claimed_resources), sizeof(controller_manager_msgs::HardwareInterfaceResources));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "controller_manager_msgs/ControllerState"; };
+    const char * getMD5(){ return "aeb6b261d97793ab74099a3740245272"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/controller_manager_msgs/ControllerStatistics.h b/otto_controller_source/Inc/controller_manager_msgs/ControllerStatistics.h
new file mode 100644 (file)
index 0000000..c43b79a
--- /dev/null
@@ -0,0 +1,231 @@
+#ifndef _ROS_controller_manager_msgs_ControllerStatistics_h
+#define _ROS_controller_manager_msgs_ControllerStatistics_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/time.h"
+#include "ros/duration.h"
+
+namespace controller_manager_msgs
+{
+
+  class ControllerStatistics : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef const char* _type_type;
+      _type_type type;
+      typedef ros::Time _timestamp_type;
+      _timestamp_type timestamp;
+      typedef bool _running_type;
+      _running_type running;
+      typedef ros::Duration _max_time_type;
+      _max_time_type max_time;
+      typedef ros::Duration _mean_time_type;
+      _mean_time_type mean_time;
+      typedef ros::Duration _variance_time_type;
+      _variance_time_type variance_time;
+      typedef int32_t _num_control_loop_overruns_type;
+      _num_control_loop_overruns_type num_control_loop_overruns;
+      typedef ros::Time _time_last_control_loop_overrun_type;
+      _time_last_control_loop_overrun_type time_last_control_loop_overrun;
+
+    ControllerStatistics():
+      name(""),
+      type(""),
+      timestamp(),
+      running(0),
+      max_time(),
+      mean_time(),
+      variance_time(),
+      num_control_loop_overruns(0),
+      time_last_control_loop_overrun()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      uint32_t length_type = strlen(this->type);
+      varToArr(outbuffer + offset, length_type);
+      offset += 4;
+      memcpy(outbuffer + offset, this->type, length_type);
+      offset += length_type;
+      *(outbuffer + offset + 0) = (this->timestamp.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->timestamp.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->timestamp.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->timestamp.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->timestamp.sec);
+      *(outbuffer + offset + 0) = (this->timestamp.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->timestamp.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->timestamp.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->timestamp.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->timestamp.nsec);
+      union {
+        bool real;
+        uint8_t base;
+      } u_running;
+      u_running.real = this->running;
+      *(outbuffer + offset + 0) = (u_running.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->running);
+      *(outbuffer + offset + 0) = (this->max_time.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->max_time.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->max_time.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->max_time.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->max_time.sec);
+      *(outbuffer + offset + 0) = (this->max_time.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->max_time.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->max_time.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->max_time.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->max_time.nsec);
+      *(outbuffer + offset + 0) = (this->mean_time.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->mean_time.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->mean_time.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->mean_time.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->mean_time.sec);
+      *(outbuffer + offset + 0) = (this->mean_time.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->mean_time.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->mean_time.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->mean_time.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->mean_time.nsec);
+      *(outbuffer + offset + 0) = (this->variance_time.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->variance_time.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->variance_time.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->variance_time.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->variance_time.sec);
+      *(outbuffer + offset + 0) = (this->variance_time.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->variance_time.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->variance_time.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->variance_time.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->variance_time.nsec);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_num_control_loop_overruns;
+      u_num_control_loop_overruns.real = this->num_control_loop_overruns;
+      *(outbuffer + offset + 0) = (u_num_control_loop_overruns.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_num_control_loop_overruns.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_num_control_loop_overruns.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_num_control_loop_overruns.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->num_control_loop_overruns);
+      *(outbuffer + offset + 0) = (this->time_last_control_loop_overrun.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->time_last_control_loop_overrun.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->time_last_control_loop_overrun.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->time_last_control_loop_overrun.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->time_last_control_loop_overrun.sec);
+      *(outbuffer + offset + 0) = (this->time_last_control_loop_overrun.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->time_last_control_loop_overrun.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->time_last_control_loop_overrun.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->time_last_control_loop_overrun.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->time_last_control_loop_overrun.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      uint32_t length_type;
+      arrToVar(length_type, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_type; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_type-1]=0;
+      this->type = (char *)(inbuffer + offset-1);
+      offset += length_type;
+      this->timestamp.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->timestamp.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->timestamp.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->timestamp.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->timestamp.sec);
+      this->timestamp.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->timestamp.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->timestamp.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->timestamp.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->timestamp.nsec);
+      union {
+        bool real;
+        uint8_t base;
+      } u_running;
+      u_running.base = 0;
+      u_running.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->running = u_running.real;
+      offset += sizeof(this->running);
+      this->max_time.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->max_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->max_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->max_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->max_time.sec);
+      this->max_time.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->max_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->max_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->max_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->max_time.nsec);
+      this->mean_time.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->mean_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->mean_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->mean_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->mean_time.sec);
+      this->mean_time.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->mean_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->mean_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->mean_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->mean_time.nsec);
+      this->variance_time.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->variance_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->variance_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->variance_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->variance_time.sec);
+      this->variance_time.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->variance_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->variance_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->variance_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->variance_time.nsec);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_num_control_loop_overruns;
+      u_num_control_loop_overruns.base = 0;
+      u_num_control_loop_overruns.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_num_control_loop_overruns.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_num_control_loop_overruns.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_num_control_loop_overruns.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->num_control_loop_overruns = u_num_control_loop_overruns.real;
+      offset += sizeof(this->num_control_loop_overruns);
+      this->time_last_control_loop_overrun.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->time_last_control_loop_overrun.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->time_last_control_loop_overrun.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->time_last_control_loop_overrun.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->time_last_control_loop_overrun.sec);
+      this->time_last_control_loop_overrun.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->time_last_control_loop_overrun.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->time_last_control_loop_overrun.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->time_last_control_loop_overrun.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->time_last_control_loop_overrun.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return "controller_manager_msgs/ControllerStatistics"; };
+    const char * getMD5(){ return "697780c372c8d8597a1436d0e2ad3ba8"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/controller_manager_msgs/ControllersStatistics.h b/otto_controller_source/Inc/controller_manager_msgs/ControllersStatistics.h
new file mode 100644 (file)
index 0000000..a01097c
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef _ROS_controller_manager_msgs_ControllersStatistics_h
+#define _ROS_controller_manager_msgs_ControllersStatistics_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "controller_manager_msgs/ControllerStatistics.h"
+
+namespace controller_manager_msgs
+{
+
+  class ControllersStatistics : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t controller_length;
+      typedef controller_manager_msgs::ControllerStatistics _controller_type;
+      _controller_type st_controller;
+      _controller_type * controller;
+
+    ControllersStatistics():
+      header(),
+      controller_length(0), controller(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->controller_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->controller_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->controller_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->controller_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->controller_length);
+      for( uint32_t i = 0; i < controller_length; i++){
+      offset += this->controller[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t controller_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->controller_length);
+      if(controller_lengthT > controller_length)
+        this->controller = (controller_manager_msgs::ControllerStatistics*)realloc(this->controller, controller_lengthT * sizeof(controller_manager_msgs::ControllerStatistics));
+      controller_length = controller_lengthT;
+      for( uint32_t i = 0; i < controller_length; i++){
+      offset += this->st_controller.deserialize(inbuffer + offset);
+        memcpy( &(this->controller[i]), &(this->st_controller), sizeof(controller_manager_msgs::ControllerStatistics));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "controller_manager_msgs/ControllersStatistics"; };
+    const char * getMD5(){ return "a154c347736773e3700d1719105df29d"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/controller_manager_msgs/HardwareInterfaceResources.h b/otto_controller_source/Inc/controller_manager_msgs/HardwareInterfaceResources.h
new file mode 100644 (file)
index 0000000..84eb396
--- /dev/null
@@ -0,0 +1,92 @@
+#ifndef _ROS_controller_manager_msgs_HardwareInterfaceResources_h
+#define _ROS_controller_manager_msgs_HardwareInterfaceResources_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace controller_manager_msgs
+{
+
+  class HardwareInterfaceResources : public ros::Msg
+  {
+    public:
+      typedef const char* _hardware_interface_type;
+      _hardware_interface_type hardware_interface;
+      uint32_t resources_length;
+      typedef char* _resources_type;
+      _resources_type st_resources;
+      _resources_type * resources;
+
+    HardwareInterfaceResources():
+      hardware_interface(""),
+      resources_length(0), resources(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_hardware_interface = strlen(this->hardware_interface);
+      varToArr(outbuffer + offset, length_hardware_interface);
+      offset += 4;
+      memcpy(outbuffer + offset, this->hardware_interface, length_hardware_interface);
+      offset += length_hardware_interface;
+      *(outbuffer + offset + 0) = (this->resources_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->resources_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->resources_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->resources_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->resources_length);
+      for( uint32_t i = 0; i < resources_length; i++){
+      uint32_t length_resourcesi = strlen(this->resources[i]);
+      varToArr(outbuffer + offset, length_resourcesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->resources[i], length_resourcesi);
+      offset += length_resourcesi;
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_hardware_interface;
+      arrToVar(length_hardware_interface, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_hardware_interface; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_hardware_interface-1]=0;
+      this->hardware_interface = (char *)(inbuffer + offset-1);
+      offset += length_hardware_interface;
+      uint32_t resources_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      resources_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->resources_length);
+      if(resources_lengthT > resources_length)
+        this->resources = (char**)realloc(this->resources, resources_lengthT * sizeof(char*));
+      resources_length = resources_lengthT;
+      for( uint32_t i = 0; i < resources_length; i++){
+      uint32_t length_st_resources;
+      arrToVar(length_st_resources, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_resources; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_resources-1]=0;
+      this->st_resources = (char *)(inbuffer + offset-1);
+      offset += length_st_resources;
+        memcpy( &(this->resources[i]), &(this->st_resources), sizeof(char*));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "controller_manager_msgs/HardwareInterfaceResources"; };
+    const char * getMD5(){ return "f25b55cbf1d1f76e82e5ec9e83f76258"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/controller_manager_msgs/ListControllerTypes.h b/otto_controller_source/Inc/controller_manager_msgs/ListControllerTypes.h
new file mode 100644 (file)
index 0000000..45097f8
--- /dev/null
@@ -0,0 +1,144 @@
+#ifndef _ROS_SERVICE_ListControllerTypes_h
+#define _ROS_SERVICE_ListControllerTypes_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace controller_manager_msgs
+{
+
+static const char LISTCONTROLLERTYPES[] = "controller_manager_msgs/ListControllerTypes";
+
+  class ListControllerTypesRequest : public ros::Msg
+  {
+    public:
+
+    ListControllerTypesRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return LISTCONTROLLERTYPES; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class ListControllerTypesResponse : public ros::Msg
+  {
+    public:
+      uint32_t types_length;
+      typedef char* _types_type;
+      _types_type st_types;
+      _types_type * types;
+      uint32_t base_classes_length;
+      typedef char* _base_classes_type;
+      _base_classes_type st_base_classes;
+      _base_classes_type * base_classes;
+
+    ListControllerTypesResponse():
+      types_length(0), types(NULL),
+      base_classes_length(0), base_classes(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->types_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->types_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->types_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->types_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->types_length);
+      for( uint32_t i = 0; i < types_length; i++){
+      uint32_t length_typesi = strlen(this->types[i]);
+      varToArr(outbuffer + offset, length_typesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->types[i], length_typesi);
+      offset += length_typesi;
+      }
+      *(outbuffer + offset + 0) = (this->base_classes_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->base_classes_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->base_classes_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->base_classes_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->base_classes_length);
+      for( uint32_t i = 0; i < base_classes_length; i++){
+      uint32_t length_base_classesi = strlen(this->base_classes[i]);
+      varToArr(outbuffer + offset, length_base_classesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->base_classes[i], length_base_classesi);
+      offset += length_base_classesi;
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t types_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      types_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      types_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      types_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->types_length);
+      if(types_lengthT > types_length)
+        this->types = (char**)realloc(this->types, types_lengthT * sizeof(char*));
+      types_length = types_lengthT;
+      for( uint32_t i = 0; i < types_length; i++){
+      uint32_t length_st_types;
+      arrToVar(length_st_types, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_types; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_types-1]=0;
+      this->st_types = (char *)(inbuffer + offset-1);
+      offset += length_st_types;
+        memcpy( &(this->types[i]), &(this->st_types), sizeof(char*));
+      }
+      uint32_t base_classes_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      base_classes_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      base_classes_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      base_classes_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->base_classes_length);
+      if(base_classes_lengthT > base_classes_length)
+        this->base_classes = (char**)realloc(this->base_classes, base_classes_lengthT * sizeof(char*));
+      base_classes_length = base_classes_lengthT;
+      for( uint32_t i = 0; i < base_classes_length; i++){
+      uint32_t length_st_base_classes;
+      arrToVar(length_st_base_classes, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_base_classes; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_base_classes-1]=0;
+      this->st_base_classes = (char *)(inbuffer + offset-1);
+      offset += length_st_base_classes;
+        memcpy( &(this->base_classes[i]), &(this->st_base_classes), sizeof(char*));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return LISTCONTROLLERTYPES; };
+    const char * getMD5(){ return "c1d4cd11aefa9f97ba4aeb5b33987f4e"; };
+
+  };
+
+  class ListControllerTypes {
+    public:
+    typedef ListControllerTypesRequest Request;
+    typedef ListControllerTypesResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/controller_manager_msgs/ListControllers.h b/otto_controller_source/Inc/controller_manager_msgs/ListControllers.h
new file mode 100644 (file)
index 0000000..f0d2a5e
--- /dev/null
@@ -0,0 +1,96 @@
+#ifndef _ROS_SERVICE_ListControllers_h
+#define _ROS_SERVICE_ListControllers_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "controller_manager_msgs/ControllerState.h"
+
+namespace controller_manager_msgs
+{
+
+static const char LISTCONTROLLERS[] = "controller_manager_msgs/ListControllers";
+
+  class ListControllersRequest : public ros::Msg
+  {
+    public:
+
+    ListControllersRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return LISTCONTROLLERS; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class ListControllersResponse : public ros::Msg
+  {
+    public:
+      uint32_t controller_length;
+      typedef controller_manager_msgs::ControllerState _controller_type;
+      _controller_type st_controller;
+      _controller_type * controller;
+
+    ListControllersResponse():
+      controller_length(0), controller(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->controller_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->controller_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->controller_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->controller_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->controller_length);
+      for( uint32_t i = 0; i < controller_length; i++){
+      offset += this->controller[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t controller_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      controller_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->controller_length);
+      if(controller_lengthT > controller_length)
+        this->controller = (controller_manager_msgs::ControllerState*)realloc(this->controller, controller_lengthT * sizeof(controller_manager_msgs::ControllerState));
+      controller_length = controller_lengthT;
+      for( uint32_t i = 0; i < controller_length; i++){
+      offset += this->st_controller.deserialize(inbuffer + offset);
+        memcpy( &(this->controller[i]), &(this->st_controller), sizeof(controller_manager_msgs::ControllerState));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return LISTCONTROLLERS; };
+    const char * getMD5(){ return "1341feb2e63fa791f855565d0da950d8"; };
+
+  };
+
+  class ListControllers {
+    public:
+    typedef ListControllersRequest Request;
+    typedef ListControllersResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/controller_manager_msgs/LoadController.h b/otto_controller_source/Inc/controller_manager_msgs/LoadController.h
new file mode 100644 (file)
index 0000000..98d018f
--- /dev/null
@@ -0,0 +1,105 @@
+#ifndef _ROS_SERVICE_LoadController_h
+#define _ROS_SERVICE_LoadController_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace controller_manager_msgs
+{
+
+static const char LOADCONTROLLER[] = "controller_manager_msgs/LoadController";
+
+  class LoadControllerRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+
+    LoadControllerRequest():
+      name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+     return offset;
+    }
+
+    const char * getType(){ return LOADCONTROLLER; };
+    const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; };
+
+  };
+
+  class LoadControllerResponse : public ros::Msg
+  {
+    public:
+      typedef bool _ok_type;
+      _ok_type ok;
+
+    LoadControllerResponse():
+      ok(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_ok;
+      u_ok.real = this->ok;
+      *(outbuffer + offset + 0) = (u_ok.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->ok);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_ok;
+      u_ok.base = 0;
+      u_ok.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->ok = u_ok.real;
+      offset += sizeof(this->ok);
+     return offset;
+    }
+
+    const char * getType(){ return LOADCONTROLLER; };
+    const char * getMD5(){ return "6f6da3883749771fac40d6deb24a8c02"; };
+
+  };
+
+  class LoadController {
+    public:
+    typedef LoadControllerRequest Request;
+    typedef LoadControllerResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/controller_manager_msgs/ReloadControllerLibraries.h b/otto_controller_source/Inc/controller_manager_msgs/ReloadControllerLibraries.h
new file mode 100644 (file)
index 0000000..279de97
--- /dev/null
@@ -0,0 +1,106 @@
+#ifndef _ROS_SERVICE_ReloadControllerLibraries_h
+#define _ROS_SERVICE_ReloadControllerLibraries_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace controller_manager_msgs
+{
+
+static const char RELOADCONTROLLERLIBRARIES[] = "controller_manager_msgs/ReloadControllerLibraries";
+
+  class ReloadControllerLibrariesRequest : public ros::Msg
+  {
+    public:
+      typedef bool _force_kill_type;
+      _force_kill_type force_kill;
+
+    ReloadControllerLibrariesRequest():
+      force_kill(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_force_kill;
+      u_force_kill.real = this->force_kill;
+      *(outbuffer + offset + 0) = (u_force_kill.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->force_kill);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_force_kill;
+      u_force_kill.base = 0;
+      u_force_kill.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->force_kill = u_force_kill.real;
+      offset += sizeof(this->force_kill);
+     return offset;
+    }
+
+    const char * getType(){ return RELOADCONTROLLERLIBRARIES; };
+    const char * getMD5(){ return "18442b59be9479097f11c543bddbac62"; };
+
+  };
+
+  class ReloadControllerLibrariesResponse : public ros::Msg
+  {
+    public:
+      typedef bool _ok_type;
+      _ok_type ok;
+
+    ReloadControllerLibrariesResponse():
+      ok(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_ok;
+      u_ok.real = this->ok;
+      *(outbuffer + offset + 0) = (u_ok.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->ok);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_ok;
+      u_ok.base = 0;
+      u_ok.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->ok = u_ok.real;
+      offset += sizeof(this->ok);
+     return offset;
+    }
+
+    const char * getType(){ return RELOADCONTROLLERLIBRARIES; };
+    const char * getMD5(){ return "6f6da3883749771fac40d6deb24a8c02"; };
+
+  };
+
+  class ReloadControllerLibraries {
+    public:
+    typedef ReloadControllerLibrariesRequest Request;
+    typedef ReloadControllerLibrariesResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/controller_manager_msgs/SwitchController.h b/otto_controller_source/Inc/controller_manager_msgs/SwitchController.h
new file mode 100644 (file)
index 0000000..9b76c73
--- /dev/null
@@ -0,0 +1,188 @@
+#ifndef _ROS_SERVICE_SwitchController_h
+#define _ROS_SERVICE_SwitchController_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace controller_manager_msgs
+{
+
+static const char SWITCHCONTROLLER[] = "controller_manager_msgs/SwitchController";
+
+  class SwitchControllerRequest : public ros::Msg
+  {
+    public:
+      uint32_t start_controllers_length;
+      typedef char* _start_controllers_type;
+      _start_controllers_type st_start_controllers;
+      _start_controllers_type * start_controllers;
+      uint32_t stop_controllers_length;
+      typedef char* _stop_controllers_type;
+      _stop_controllers_type st_stop_controllers;
+      _stop_controllers_type * stop_controllers;
+      typedef int32_t _strictness_type;
+      _strictness_type strictness;
+      enum { BEST_EFFORT = 1 };
+      enum { STRICT = 2 };
+
+    SwitchControllerRequest():
+      start_controllers_length(0), start_controllers(NULL),
+      stop_controllers_length(0), stop_controllers(NULL),
+      strictness(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->start_controllers_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->start_controllers_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->start_controllers_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->start_controllers_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->start_controllers_length);
+      for( uint32_t i = 0; i < start_controllers_length; i++){
+      uint32_t length_start_controllersi = strlen(this->start_controllers[i]);
+      varToArr(outbuffer + offset, length_start_controllersi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->start_controllers[i], length_start_controllersi);
+      offset += length_start_controllersi;
+      }
+      *(outbuffer + offset + 0) = (this->stop_controllers_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stop_controllers_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stop_controllers_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stop_controllers_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stop_controllers_length);
+      for( uint32_t i = 0; i < stop_controllers_length; i++){
+      uint32_t length_stop_controllersi = strlen(this->stop_controllers[i]);
+      varToArr(outbuffer + offset, length_stop_controllersi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->stop_controllers[i], length_stop_controllersi);
+      offset += length_stop_controllersi;
+      }
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_strictness;
+      u_strictness.real = this->strictness;
+      *(outbuffer + offset + 0) = (u_strictness.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_strictness.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_strictness.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_strictness.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->strictness);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t start_controllers_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      start_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      start_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      start_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->start_controllers_length);
+      if(start_controllers_lengthT > start_controllers_length)
+        this->start_controllers = (char**)realloc(this->start_controllers, start_controllers_lengthT * sizeof(char*));
+      start_controllers_length = start_controllers_lengthT;
+      for( uint32_t i = 0; i < start_controllers_length; i++){
+      uint32_t length_st_start_controllers;
+      arrToVar(length_st_start_controllers, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_start_controllers; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_start_controllers-1]=0;
+      this->st_start_controllers = (char *)(inbuffer + offset-1);
+      offset += length_st_start_controllers;
+        memcpy( &(this->start_controllers[i]), &(this->st_start_controllers), sizeof(char*));
+      }
+      uint32_t stop_controllers_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      stop_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      stop_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      stop_controllers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->stop_controllers_length);
+      if(stop_controllers_lengthT > stop_controllers_length)
+        this->stop_controllers = (char**)realloc(this->stop_controllers, stop_controllers_lengthT * sizeof(char*));
+      stop_controllers_length = stop_controllers_lengthT;
+      for( uint32_t i = 0; i < stop_controllers_length; i++){
+      uint32_t length_st_stop_controllers;
+      arrToVar(length_st_stop_controllers, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_stop_controllers; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_stop_controllers-1]=0;
+      this->st_stop_controllers = (char *)(inbuffer + offset-1);
+      offset += length_st_stop_controllers;
+        memcpy( &(this->stop_controllers[i]), &(this->st_stop_controllers), sizeof(char*));
+      }
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_strictness;
+      u_strictness.base = 0;
+      u_strictness.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_strictness.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_strictness.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_strictness.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->strictness = u_strictness.real;
+      offset += sizeof(this->strictness);
+     return offset;
+    }
+
+    const char * getType(){ return SWITCHCONTROLLER; };
+    const char * getMD5(){ return "434da54adc434a5af5743ed711fd6ba1"; };
+
+  };
+
+  class SwitchControllerResponse : public ros::Msg
+  {
+    public:
+      typedef bool _ok_type;
+      _ok_type ok;
+
+    SwitchControllerResponse():
+      ok(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_ok;
+      u_ok.real = this->ok;
+      *(outbuffer + offset + 0) = (u_ok.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->ok);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_ok;
+      u_ok.base = 0;
+      u_ok.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->ok = u_ok.real;
+      offset += sizeof(this->ok);
+     return offset;
+    }
+
+    const char * getType(){ return SWITCHCONTROLLER; };
+    const char * getMD5(){ return "6f6da3883749771fac40d6deb24a8c02"; };
+
+  };
+
+  class SwitchController {
+    public:
+    typedef SwitchControllerRequest Request;
+    typedef SwitchControllerResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/controller_manager_msgs/UnloadController.h b/otto_controller_source/Inc/controller_manager_msgs/UnloadController.h
new file mode 100644 (file)
index 0000000..b8bba74
--- /dev/null
@@ -0,0 +1,105 @@
+#ifndef _ROS_SERVICE_UnloadController_h
+#define _ROS_SERVICE_UnloadController_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace controller_manager_msgs
+{
+
+static const char UNLOADCONTROLLER[] = "controller_manager_msgs/UnloadController";
+
+  class UnloadControllerRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+
+    UnloadControllerRequest():
+      name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+     return offset;
+    }
+
+    const char * getType(){ return UNLOADCONTROLLER; };
+    const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; };
+
+  };
+
+  class UnloadControllerResponse : public ros::Msg
+  {
+    public:
+      typedef bool _ok_type;
+      _ok_type ok;
+
+    UnloadControllerResponse():
+      ok(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_ok;
+      u_ok.real = this->ok;
+      *(outbuffer + offset + 0) = (u_ok.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->ok);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_ok;
+      u_ok.base = 0;
+      u_ok.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->ok = u_ok.real;
+      offset += sizeof(this->ok);
+     return offset;
+    }
+
+    const char * getType(){ return UNLOADCONTROLLER; };
+    const char * getMD5(){ return "6f6da3883749771fac40d6deb24a8c02"; };
+
+  };
+
+  class UnloadController {
+    public:
+    typedef UnloadControllerRequest Request;
+    typedef UnloadControllerResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/diagnostic_msgs/AddDiagnostics.h b/otto_controller_source/Inc/diagnostic_msgs/AddDiagnostics.h
new file mode 100644 (file)
index 0000000..4180098
--- /dev/null
@@ -0,0 +1,122 @@
+#ifndef _ROS_SERVICE_AddDiagnostics_h
+#define _ROS_SERVICE_AddDiagnostics_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace diagnostic_msgs
+{
+
+static const char ADDDIAGNOSTICS[] = "diagnostic_msgs/AddDiagnostics";
+
+  class AddDiagnosticsRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _load_namespace_type;
+      _load_namespace_type load_namespace;
+
+    AddDiagnosticsRequest():
+      load_namespace("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_load_namespace = strlen(this->load_namespace);
+      varToArr(outbuffer + offset, length_load_namespace);
+      offset += 4;
+      memcpy(outbuffer + offset, this->load_namespace, length_load_namespace);
+      offset += length_load_namespace;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_load_namespace;
+      arrToVar(length_load_namespace, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_load_namespace; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_load_namespace-1]=0;
+      this->load_namespace = (char *)(inbuffer + offset-1);
+      offset += length_load_namespace;
+     return offset;
+    }
+
+    const char * getType(){ return ADDDIAGNOSTICS; };
+    const char * getMD5(){ return "c26cf6e164288fbc6050d74f838bcdf0"; };
+
+  };
+
+  class AddDiagnosticsResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _message_type;
+      _message_type message;
+
+    AddDiagnosticsResponse():
+      success(0),
+      message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_message = strlen(this->message);
+      varToArr(outbuffer + offset, length_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->message, length_message);
+      offset += length_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_message;
+      arrToVar(length_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_message-1]=0;
+      this->message = (char *)(inbuffer + offset-1);
+      offset += length_message;
+     return offset;
+    }
+
+    const char * getType(){ return ADDDIAGNOSTICS; };
+    const char * getMD5(){ return "937c9679a518e3a18d831e57125ea522"; };
+
+  };
+
+  class AddDiagnostics {
+    public:
+    typedef AddDiagnosticsRequest Request;
+    typedef AddDiagnosticsResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/diagnostic_msgs/DiagnosticArray.h b/otto_controller_source/Inc/diagnostic_msgs/DiagnosticArray.h
new file mode 100644 (file)
index 0000000..7385337
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef _ROS_diagnostic_msgs_DiagnosticArray_h
+#define _ROS_diagnostic_msgs_DiagnosticArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "diagnostic_msgs/DiagnosticStatus.h"
+
+namespace diagnostic_msgs
+{
+
+  class DiagnosticArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t status_length;
+      typedef diagnostic_msgs::DiagnosticStatus _status_type;
+      _status_type st_status;
+      _status_type * status;
+
+    DiagnosticArray():
+      header(),
+      status_length(0), status(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->status_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->status_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->status_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->status_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->status_length);
+      for( uint32_t i = 0; i < status_length; i++){
+      offset += this->status[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t status_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      status_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      status_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      status_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->status_length);
+      if(status_lengthT > status_length)
+        this->status = (diagnostic_msgs::DiagnosticStatus*)realloc(this->status, status_lengthT * sizeof(diagnostic_msgs::DiagnosticStatus));
+      status_length = status_lengthT;
+      for( uint32_t i = 0; i < status_length; i++){
+      offset += this->st_status.deserialize(inbuffer + offset);
+        memcpy( &(this->status[i]), &(this->st_status), sizeof(diagnostic_msgs::DiagnosticStatus));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "diagnostic_msgs/DiagnosticArray"; };
+    const char * getMD5(){ return "60810da900de1dd6ddd437c3503511da"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/diagnostic_msgs/DiagnosticStatus.h b/otto_controller_source/Inc/diagnostic_msgs/DiagnosticStatus.h
new file mode 100644 (file)
index 0000000..8f7ab02
--- /dev/null
@@ -0,0 +1,137 @@
+#ifndef _ROS_diagnostic_msgs_DiagnosticStatus_h
+#define _ROS_diagnostic_msgs_DiagnosticStatus_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "diagnostic_msgs/KeyValue.h"
+
+namespace diagnostic_msgs
+{
+
+  class DiagnosticStatus : public ros::Msg
+  {
+    public:
+      typedef int8_t _level_type;
+      _level_type level;
+      typedef const char* _name_type;
+      _name_type name;
+      typedef const char* _message_type;
+      _message_type message;
+      typedef const char* _hardware_id_type;
+      _hardware_id_type hardware_id;
+      uint32_t values_length;
+      typedef diagnostic_msgs::KeyValue _values_type;
+      _values_type st_values;
+      _values_type * values;
+      enum { OK = 0 };
+      enum { WARN = 1 };
+      enum { ERROR = 2 };
+      enum { STALE = 3 };
+
+    DiagnosticStatus():
+      level(0),
+      name(""),
+      message(""),
+      hardware_id(""),
+      values_length(0), values(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_level;
+      u_level.real = this->level;
+      *(outbuffer + offset + 0) = (u_level.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->level);
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      uint32_t length_message = strlen(this->message);
+      varToArr(outbuffer + offset, length_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->message, length_message);
+      offset += length_message;
+      uint32_t length_hardware_id = strlen(this->hardware_id);
+      varToArr(outbuffer + offset, length_hardware_id);
+      offset += 4;
+      memcpy(outbuffer + offset, this->hardware_id, length_hardware_id);
+      offset += length_hardware_id;
+      *(outbuffer + offset + 0) = (this->values_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->values_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->values_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->values_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->values_length);
+      for( uint32_t i = 0; i < values_length; i++){
+      offset += this->values[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_level;
+      u_level.base = 0;
+      u_level.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->level = u_level.real;
+      offset += sizeof(this->level);
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      uint32_t length_message;
+      arrToVar(length_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_message-1]=0;
+      this->message = (char *)(inbuffer + offset-1);
+      offset += length_message;
+      uint32_t length_hardware_id;
+      arrToVar(length_hardware_id, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_hardware_id; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_hardware_id-1]=0;
+      this->hardware_id = (char *)(inbuffer + offset-1);
+      offset += length_hardware_id;
+      uint32_t values_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      values_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      values_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      values_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->values_length);
+      if(values_lengthT > values_length)
+        this->values = (diagnostic_msgs::KeyValue*)realloc(this->values, values_lengthT * sizeof(diagnostic_msgs::KeyValue));
+      values_length = values_lengthT;
+      for( uint32_t i = 0; i < values_length; i++){
+      offset += this->st_values.deserialize(inbuffer + offset);
+        memcpy( &(this->values[i]), &(this->st_values), sizeof(diagnostic_msgs::KeyValue));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "diagnostic_msgs/DiagnosticStatus"; };
+    const char * getMD5(){ return "d0ce08bc6e5ba34c7754f563a9cabaf1"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/diagnostic_msgs/KeyValue.h b/otto_controller_source/Inc/diagnostic_msgs/KeyValue.h
new file mode 100644 (file)
index 0000000..81c1937
--- /dev/null
@@ -0,0 +1,72 @@
+#ifndef _ROS_diagnostic_msgs_KeyValue_h
+#define _ROS_diagnostic_msgs_KeyValue_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace diagnostic_msgs
+{
+
+  class KeyValue : public ros::Msg
+  {
+    public:
+      typedef const char* _key_type;
+      _key_type key;
+      typedef const char* _value_type;
+      _value_type value;
+
+    KeyValue():
+      key(""),
+      value("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_key = strlen(this->key);
+      varToArr(outbuffer + offset, length_key);
+      offset += 4;
+      memcpy(outbuffer + offset, this->key, length_key);
+      offset += length_key;
+      uint32_t length_value = strlen(this->value);
+      varToArr(outbuffer + offset, length_value);
+      offset += 4;
+      memcpy(outbuffer + offset, this->value, length_value);
+      offset += length_value;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_key;
+      arrToVar(length_key, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_key; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_key-1]=0;
+      this->key = (char *)(inbuffer + offset-1);
+      offset += length_key;
+      uint32_t length_value;
+      arrToVar(length_value, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_value; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_value-1]=0;
+      this->value = (char *)(inbuffer + offset-1);
+      offset += length_value;
+     return offset;
+    }
+
+    const char * getType(){ return "diagnostic_msgs/KeyValue"; };
+    const char * getMD5(){ return "cf57fdc6617a881a88c16e768132149c"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/diagnostic_msgs/SelfTest.h b/otto_controller_source/Inc/diagnostic_msgs/SelfTest.h
new file mode 100644 (file)
index 0000000..6687c6b
--- /dev/null
@@ -0,0 +1,131 @@
+#ifndef _ROS_SERVICE_SelfTest_h
+#define _ROS_SERVICE_SelfTest_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "diagnostic_msgs/DiagnosticStatus.h"
+
+namespace diagnostic_msgs
+{
+
+static const char SELFTEST[] = "diagnostic_msgs/SelfTest";
+
+  class SelfTestRequest : public ros::Msg
+  {
+    public:
+
+    SelfTestRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return SELFTEST; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class SelfTestResponse : public ros::Msg
+  {
+    public:
+      typedef const char* _id_type;
+      _id_type id;
+      typedef int8_t _passed_type;
+      _passed_type passed;
+      uint32_t status_length;
+      typedef diagnostic_msgs::DiagnosticStatus _status_type;
+      _status_type st_status;
+      _status_type * status;
+
+    SelfTestResponse():
+      id(""),
+      passed(0),
+      status_length(0), status(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_id = strlen(this->id);
+      varToArr(outbuffer + offset, length_id);
+      offset += 4;
+      memcpy(outbuffer + offset, this->id, length_id);
+      offset += length_id;
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_passed;
+      u_passed.real = this->passed;
+      *(outbuffer + offset + 0) = (u_passed.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->passed);
+      *(outbuffer + offset + 0) = (this->status_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->status_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->status_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->status_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->status_length);
+      for( uint32_t i = 0; i < status_length; i++){
+      offset += this->status[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_id;
+      arrToVar(length_id, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_id; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_id-1]=0;
+      this->id = (char *)(inbuffer + offset-1);
+      offset += length_id;
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_passed;
+      u_passed.base = 0;
+      u_passed.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->passed = u_passed.real;
+      offset += sizeof(this->passed);
+      uint32_t status_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      status_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      status_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      status_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->status_length);
+      if(status_lengthT > status_length)
+        this->status = (diagnostic_msgs::DiagnosticStatus*)realloc(this->status, status_lengthT * sizeof(diagnostic_msgs::DiagnosticStatus));
+      status_length = status_lengthT;
+      for( uint32_t i = 0; i < status_length; i++){
+      offset += this->st_status.deserialize(inbuffer + offset);
+        memcpy( &(this->status[i]), &(this->st_status), sizeof(diagnostic_msgs::DiagnosticStatus));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return SELFTEST; };
+    const char * getMD5(){ return "ac21b1bab7ab17546986536c22eb34e9"; };
+
+  };
+
+  class SelfTest {
+    public:
+    typedef SelfTestRequest Request;
+    typedef SelfTestResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/dynamic_reconfigure/BoolParameter.h b/otto_controller_source/Inc/dynamic_reconfigure/BoolParameter.h
new file mode 100644 (file)
index 0000000..1c9ec12
--- /dev/null
@@ -0,0 +1,73 @@
+#ifndef _ROS_dynamic_reconfigure_BoolParameter_h
+#define _ROS_dynamic_reconfigure_BoolParameter_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace dynamic_reconfigure
+{
+
+  class BoolParameter : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef bool _value_type;
+      _value_type value;
+
+    BoolParameter():
+      name(""),
+      value(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      union {
+        bool real;
+        uint8_t base;
+      } u_value;
+      u_value.real = this->value;
+      *(outbuffer + offset + 0) = (u_value.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->value);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      union {
+        bool real;
+        uint8_t base;
+      } u_value;
+      u_value.base = 0;
+      u_value.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->value = u_value.real;
+      offset += sizeof(this->value);
+     return offset;
+    }
+
+    const char * getType(){ return "dynamic_reconfigure/BoolParameter"; };
+    const char * getMD5(){ return "23f05028c1a699fb83e22401228c3a9e"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/dynamic_reconfigure/Config.h b/otto_controller_source/Inc/dynamic_reconfigure/Config.h
new file mode 100644 (file)
index 0000000..c7890b6
--- /dev/null
@@ -0,0 +1,168 @@
+#ifndef _ROS_dynamic_reconfigure_Config_h
+#define _ROS_dynamic_reconfigure_Config_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "dynamic_reconfigure/BoolParameter.h"
+#include "dynamic_reconfigure/IntParameter.h"
+#include "dynamic_reconfigure/StrParameter.h"
+#include "dynamic_reconfigure/DoubleParameter.h"
+#include "dynamic_reconfigure/GroupState.h"
+
+namespace dynamic_reconfigure
+{
+
+  class Config : public ros::Msg
+  {
+    public:
+      uint32_t bools_length;
+      typedef dynamic_reconfigure::BoolParameter _bools_type;
+      _bools_type st_bools;
+      _bools_type * bools;
+      uint32_t ints_length;
+      typedef dynamic_reconfigure::IntParameter _ints_type;
+      _ints_type st_ints;
+      _ints_type * ints;
+      uint32_t strs_length;
+      typedef dynamic_reconfigure::StrParameter _strs_type;
+      _strs_type st_strs;
+      _strs_type * strs;
+      uint32_t doubles_length;
+      typedef dynamic_reconfigure::DoubleParameter _doubles_type;
+      _doubles_type st_doubles;
+      _doubles_type * doubles;
+      uint32_t groups_length;
+      typedef dynamic_reconfigure::GroupState _groups_type;
+      _groups_type st_groups;
+      _groups_type * groups;
+
+    Config():
+      bools_length(0), bools(NULL),
+      ints_length(0), ints(NULL),
+      strs_length(0), strs(NULL),
+      doubles_length(0), doubles(NULL),
+      groups_length(0), groups(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->bools_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->bools_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->bools_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->bools_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->bools_length);
+      for( uint32_t i = 0; i < bools_length; i++){
+      offset += this->bools[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->ints_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->ints_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->ints_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->ints_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->ints_length);
+      for( uint32_t i = 0; i < ints_length; i++){
+      offset += this->ints[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->strs_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->strs_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->strs_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->strs_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->strs_length);
+      for( uint32_t i = 0; i < strs_length; i++){
+      offset += this->strs[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->doubles_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->doubles_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->doubles_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->doubles_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->doubles_length);
+      for( uint32_t i = 0; i < doubles_length; i++){
+      offset += this->doubles[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->groups_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->groups_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->groups_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->groups_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->groups_length);
+      for( uint32_t i = 0; i < groups_length; i++){
+      offset += this->groups[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t bools_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      bools_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      bools_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      bools_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->bools_length);
+      if(bools_lengthT > bools_length)
+        this->bools = (dynamic_reconfigure::BoolParameter*)realloc(this->bools, bools_lengthT * sizeof(dynamic_reconfigure::BoolParameter));
+      bools_length = bools_lengthT;
+      for( uint32_t i = 0; i < bools_length; i++){
+      offset += this->st_bools.deserialize(inbuffer + offset);
+        memcpy( &(this->bools[i]), &(this->st_bools), sizeof(dynamic_reconfigure::BoolParameter));
+      }
+      uint32_t ints_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->ints_length);
+      if(ints_lengthT > ints_length)
+        this->ints = (dynamic_reconfigure::IntParameter*)realloc(this->ints, ints_lengthT * sizeof(dynamic_reconfigure::IntParameter));
+      ints_length = ints_lengthT;
+      for( uint32_t i = 0; i < ints_length; i++){
+      offset += this->st_ints.deserialize(inbuffer + offset);
+        memcpy( &(this->ints[i]), &(this->st_ints), sizeof(dynamic_reconfigure::IntParameter));
+      }
+      uint32_t strs_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      strs_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      strs_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      strs_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->strs_length);
+      if(strs_lengthT > strs_length)
+        this->strs = (dynamic_reconfigure::StrParameter*)realloc(this->strs, strs_lengthT * sizeof(dynamic_reconfigure::StrParameter));
+      strs_length = strs_lengthT;
+      for( uint32_t i = 0; i < strs_length; i++){
+      offset += this->st_strs.deserialize(inbuffer + offset);
+        memcpy( &(this->strs[i]), &(this->st_strs), sizeof(dynamic_reconfigure::StrParameter));
+      }
+      uint32_t doubles_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      doubles_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      doubles_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      doubles_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->doubles_length);
+      if(doubles_lengthT > doubles_length)
+        this->doubles = (dynamic_reconfigure::DoubleParameter*)realloc(this->doubles, doubles_lengthT * sizeof(dynamic_reconfigure::DoubleParameter));
+      doubles_length = doubles_lengthT;
+      for( uint32_t i = 0; i < doubles_length; i++){
+      offset += this->st_doubles.deserialize(inbuffer + offset);
+        memcpy( &(this->doubles[i]), &(this->st_doubles), sizeof(dynamic_reconfigure::DoubleParameter));
+      }
+      uint32_t groups_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->groups_length);
+      if(groups_lengthT > groups_length)
+        this->groups = (dynamic_reconfigure::GroupState*)realloc(this->groups, groups_lengthT * sizeof(dynamic_reconfigure::GroupState));
+      groups_length = groups_lengthT;
+      for( uint32_t i = 0; i < groups_length; i++){
+      offset += this->st_groups.deserialize(inbuffer + offset);
+        memcpy( &(this->groups[i]), &(this->st_groups), sizeof(dynamic_reconfigure::GroupState));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "dynamic_reconfigure/Config"; };
+    const char * getMD5(){ return "958f16a05573709014982821e6822580"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/dynamic_reconfigure/ConfigDescription.h b/otto_controller_source/Inc/dynamic_reconfigure/ConfigDescription.h
new file mode 100644 (file)
index 0000000..8a1fd63
--- /dev/null
@@ -0,0 +1,80 @@
+#ifndef _ROS_dynamic_reconfigure_ConfigDescription_h
+#define _ROS_dynamic_reconfigure_ConfigDescription_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "dynamic_reconfigure/Group.h"
+#include "dynamic_reconfigure/Config.h"
+
+namespace dynamic_reconfigure
+{
+
+  class ConfigDescription : public ros::Msg
+  {
+    public:
+      uint32_t groups_length;
+      typedef dynamic_reconfigure::Group _groups_type;
+      _groups_type st_groups;
+      _groups_type * groups;
+      typedef dynamic_reconfigure::Config _max_type;
+      _max_type max;
+      typedef dynamic_reconfigure::Config _min_type;
+      _min_type min;
+      typedef dynamic_reconfigure::Config _dflt_type;
+      _dflt_type dflt;
+
+    ConfigDescription():
+      groups_length(0), groups(NULL),
+      max(),
+      min(),
+      dflt()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->groups_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->groups_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->groups_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->groups_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->groups_length);
+      for( uint32_t i = 0; i < groups_length; i++){
+      offset += this->groups[i].serialize(outbuffer + offset);
+      }
+      offset += this->max.serialize(outbuffer + offset);
+      offset += this->min.serialize(outbuffer + offset);
+      offset += this->dflt.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t groups_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      groups_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->groups_length);
+      if(groups_lengthT > groups_length)
+        this->groups = (dynamic_reconfigure::Group*)realloc(this->groups, groups_lengthT * sizeof(dynamic_reconfigure::Group));
+      groups_length = groups_lengthT;
+      for( uint32_t i = 0; i < groups_length; i++){
+      offset += this->st_groups.deserialize(inbuffer + offset);
+        memcpy( &(this->groups[i]), &(this->st_groups), sizeof(dynamic_reconfigure::Group));
+      }
+      offset += this->max.deserialize(inbuffer + offset);
+      offset += this->min.deserialize(inbuffer + offset);
+      offset += this->dflt.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "dynamic_reconfigure/ConfigDescription"; };
+    const char * getMD5(){ return "757ce9d44ba8ddd801bb30bc456f946f"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/dynamic_reconfigure/DoubleParameter.h b/otto_controller_source/Inc/dynamic_reconfigure/DoubleParameter.h
new file mode 100644 (file)
index 0000000..50e5b89
--- /dev/null
@@ -0,0 +1,60 @@
+#ifndef _ROS_dynamic_reconfigure_DoubleParameter_h
+#define _ROS_dynamic_reconfigure_DoubleParameter_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace dynamic_reconfigure
+{
+
+  class DoubleParameter : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef float _value_type;
+      _value_type value;
+
+    DoubleParameter():
+      name(""),
+      value(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      offset += serializeAvrFloat64(outbuffer + offset, this->value);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->value));
+     return offset;
+    }
+
+    const char * getType(){ return "dynamic_reconfigure/DoubleParameter"; };
+    const char * getMD5(){ return "d8512f27253c0f65f928a67c329cd658"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/dynamic_reconfigure/Group.h b/otto_controller_source/Inc/dynamic_reconfigure/Group.h
new file mode 100644 (file)
index 0000000..8e2fc04
--- /dev/null
@@ -0,0 +1,146 @@
+#ifndef _ROS_dynamic_reconfigure_Group_h
+#define _ROS_dynamic_reconfigure_Group_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "dynamic_reconfigure/ParamDescription.h"
+
+namespace dynamic_reconfigure
+{
+
+  class Group : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef const char* _type_type;
+      _type_type type;
+      uint32_t parameters_length;
+      typedef dynamic_reconfigure::ParamDescription _parameters_type;
+      _parameters_type st_parameters;
+      _parameters_type * parameters;
+      typedef int32_t _parent_type;
+      _parent_type parent;
+      typedef int32_t _id_type;
+      _id_type id;
+
+    Group():
+      name(""),
+      type(""),
+      parameters_length(0), parameters(NULL),
+      parent(0),
+      id(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      uint32_t length_type = strlen(this->type);
+      varToArr(outbuffer + offset, length_type);
+      offset += 4;
+      memcpy(outbuffer + offset, this->type, length_type);
+      offset += length_type;
+      *(outbuffer + offset + 0) = (this->parameters_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->parameters_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->parameters_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->parameters_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->parameters_length);
+      for( uint32_t i = 0; i < parameters_length; i++){
+      offset += this->parameters[i].serialize(outbuffer + offset);
+      }
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_parent;
+      u_parent.real = this->parent;
+      *(outbuffer + offset + 0) = (u_parent.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_parent.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_parent.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_parent.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->parent);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_id;
+      u_id.real = this->id;
+      *(outbuffer + offset + 0) = (u_id.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_id.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_id.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_id.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->id);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      uint32_t length_type;
+      arrToVar(length_type, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_type; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_type-1]=0;
+      this->type = (char *)(inbuffer + offset-1);
+      offset += length_type;
+      uint32_t parameters_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      parameters_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      parameters_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      parameters_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->parameters_length);
+      if(parameters_lengthT > parameters_length)
+        this->parameters = (dynamic_reconfigure::ParamDescription*)realloc(this->parameters, parameters_lengthT * sizeof(dynamic_reconfigure::ParamDescription));
+      parameters_length = parameters_lengthT;
+      for( uint32_t i = 0; i < parameters_length; i++){
+      offset += this->st_parameters.deserialize(inbuffer + offset);
+        memcpy( &(this->parameters[i]), &(this->st_parameters), sizeof(dynamic_reconfigure::ParamDescription));
+      }
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_parent;
+      u_parent.base = 0;
+      u_parent.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_parent.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_parent.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_parent.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->parent = u_parent.real;
+      offset += sizeof(this->parent);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_id;
+      u_id.base = 0;
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->id = u_id.real;
+      offset += sizeof(this->id);
+     return offset;
+    }
+
+    const char * getType(){ return "dynamic_reconfigure/Group"; };
+    const char * getMD5(){ return "9e8cd9e9423c94823db3614dd8b1cf7a"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/dynamic_reconfigure/GroupState.h b/otto_controller_source/Inc/dynamic_reconfigure/GroupState.h
new file mode 100644 (file)
index 0000000..2445c6b
--- /dev/null
@@ -0,0 +1,121 @@
+#ifndef _ROS_dynamic_reconfigure_GroupState_h
+#define _ROS_dynamic_reconfigure_GroupState_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace dynamic_reconfigure
+{
+
+  class GroupState : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef bool _state_type;
+      _state_type state;
+      typedef int32_t _id_type;
+      _id_type id;
+      typedef int32_t _parent_type;
+      _parent_type parent;
+
+    GroupState():
+      name(""),
+      state(0),
+      id(0),
+      parent(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      union {
+        bool real;
+        uint8_t base;
+      } u_state;
+      u_state.real = this->state;
+      *(outbuffer + offset + 0) = (u_state.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->state);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_id;
+      u_id.real = this->id;
+      *(outbuffer + offset + 0) = (u_id.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_id.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_id.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_id.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->id);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_parent;
+      u_parent.real = this->parent;
+      *(outbuffer + offset + 0) = (u_parent.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_parent.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_parent.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_parent.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->parent);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      union {
+        bool real;
+        uint8_t base;
+      } u_state;
+      u_state.base = 0;
+      u_state.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->state = u_state.real;
+      offset += sizeof(this->state);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_id;
+      u_id.base = 0;
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->id = u_id.real;
+      offset += sizeof(this->id);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_parent;
+      u_parent.base = 0;
+      u_parent.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_parent.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_parent.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_parent.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->parent = u_parent.real;
+      offset += sizeof(this->parent);
+     return offset;
+    }
+
+    const char * getType(){ return "dynamic_reconfigure/GroupState"; };
+    const char * getMD5(){ return "a2d87f51dc22930325041a2f8b1571f8"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/dynamic_reconfigure/IntParameter.h b/otto_controller_source/Inc/dynamic_reconfigure/IntParameter.h
new file mode 100644 (file)
index 0000000..4fa02e8
--- /dev/null
@@ -0,0 +1,79 @@
+#ifndef _ROS_dynamic_reconfigure_IntParameter_h
+#define _ROS_dynamic_reconfigure_IntParameter_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace dynamic_reconfigure
+{
+
+  class IntParameter : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef int32_t _value_type;
+      _value_type value;
+
+    IntParameter():
+      name(""),
+      value(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_value;
+      u_value.real = this->value;
+      *(outbuffer + offset + 0) = (u_value.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_value.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_value.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_value.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->value);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_value;
+      u_value.base = 0;
+      u_value.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_value.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_value.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_value.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->value = u_value.real;
+      offset += sizeof(this->value);
+     return offset;
+    }
+
+    const char * getType(){ return "dynamic_reconfigure/IntParameter"; };
+    const char * getMD5(){ return "65fedc7a0cbfb8db035e46194a350bf1"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/dynamic_reconfigure/ParamDescription.h b/otto_controller_source/Inc/dynamic_reconfigure/ParamDescription.h
new file mode 100644 (file)
index 0000000..bddbb58
--- /dev/null
@@ -0,0 +1,119 @@
+#ifndef _ROS_dynamic_reconfigure_ParamDescription_h
+#define _ROS_dynamic_reconfigure_ParamDescription_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace dynamic_reconfigure
+{
+
+  class ParamDescription : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef const char* _type_type;
+      _type_type type;
+      typedef uint32_t _level_type;
+      _level_type level;
+      typedef const char* _description_type;
+      _description_type description;
+      typedef const char* _edit_method_type;
+      _edit_method_type edit_method;
+
+    ParamDescription():
+      name(""),
+      type(""),
+      level(0),
+      description(""),
+      edit_method("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      uint32_t length_type = strlen(this->type);
+      varToArr(outbuffer + offset, length_type);
+      offset += 4;
+      memcpy(outbuffer + offset, this->type, length_type);
+      offset += length_type;
+      *(outbuffer + offset + 0) = (this->level >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->level >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->level >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->level >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->level);
+      uint32_t length_description = strlen(this->description);
+      varToArr(outbuffer + offset, length_description);
+      offset += 4;
+      memcpy(outbuffer + offset, this->description, length_description);
+      offset += length_description;
+      uint32_t length_edit_method = strlen(this->edit_method);
+      varToArr(outbuffer + offset, length_edit_method);
+      offset += 4;
+      memcpy(outbuffer + offset, this->edit_method, length_edit_method);
+      offset += length_edit_method;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      uint32_t length_type;
+      arrToVar(length_type, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_type; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_type-1]=0;
+      this->type = (char *)(inbuffer + offset-1);
+      offset += length_type;
+      this->level =  ((uint32_t) (*(inbuffer + offset)));
+      this->level |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->level |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->level |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->level);
+      uint32_t length_description;
+      arrToVar(length_description, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_description; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_description-1]=0;
+      this->description = (char *)(inbuffer + offset-1);
+      offset += length_description;
+      uint32_t length_edit_method;
+      arrToVar(length_edit_method, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_edit_method; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_edit_method-1]=0;
+      this->edit_method = (char *)(inbuffer + offset-1);
+      offset += length_edit_method;
+     return offset;
+    }
+
+    const char * getType(){ return "dynamic_reconfigure/ParamDescription"; };
+    const char * getMD5(){ return "7434fcb9348c13054e0c3b267c8cb34d"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/dynamic_reconfigure/Reconfigure.h b/otto_controller_source/Inc/dynamic_reconfigure/Reconfigure.h
new file mode 100644 (file)
index 0000000..e4e6b79
--- /dev/null
@@ -0,0 +1,81 @@
+#ifndef _ROS_SERVICE_Reconfigure_h
+#define _ROS_SERVICE_Reconfigure_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "dynamic_reconfigure/Config.h"
+
+namespace dynamic_reconfigure
+{
+
+static const char RECONFIGURE[] = "dynamic_reconfigure/Reconfigure";
+
+  class ReconfigureRequest : public ros::Msg
+  {
+    public:
+      typedef dynamic_reconfigure::Config _config_type;
+      _config_type config;
+
+    ReconfigureRequest():
+      config()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->config.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->config.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return RECONFIGURE; };
+    const char * getMD5(){ return "ac41a77620a4a0348b7001641796a8a1"; };
+
+  };
+
+  class ReconfigureResponse : public ros::Msg
+  {
+    public:
+      typedef dynamic_reconfigure::Config _config_type;
+      _config_type config;
+
+    ReconfigureResponse():
+      config()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->config.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->config.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return RECONFIGURE; };
+    const char * getMD5(){ return "ac41a77620a4a0348b7001641796a8a1"; };
+
+  };
+
+  class Reconfigure {
+    public:
+    typedef ReconfigureRequest Request;
+    typedef ReconfigureResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/dynamic_reconfigure/SensorLevels.h b/otto_controller_source/Inc/dynamic_reconfigure/SensorLevels.h
new file mode 100644 (file)
index 0000000..13fd269
--- /dev/null
@@ -0,0 +1,41 @@
+#ifndef _ROS_dynamic_reconfigure_SensorLevels_h
+#define _ROS_dynamic_reconfigure_SensorLevels_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace dynamic_reconfigure
+{
+
+  class SensorLevels : public ros::Msg
+  {
+    public:
+      enum { RECONFIGURE_CLOSE =  3   };
+      enum { RECONFIGURE_STOP =  1   };
+      enum { RECONFIGURE_RUNNING =  0  };
+
+    SensorLevels()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return "dynamic_reconfigure/SensorLevels"; };
+    const char * getMD5(){ return "6322637bee96d5489db6e2127c47602c"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/dynamic_reconfigure/StrParameter.h b/otto_controller_source/Inc/dynamic_reconfigure/StrParameter.h
new file mode 100644 (file)
index 0000000..965f5b7
--- /dev/null
@@ -0,0 +1,72 @@
+#ifndef _ROS_dynamic_reconfigure_StrParameter_h
+#define _ROS_dynamic_reconfigure_StrParameter_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace dynamic_reconfigure
+{
+
+  class StrParameter : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef const char* _value_type;
+      _value_type value;
+
+    StrParameter():
+      name(""),
+      value("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      uint32_t length_value = strlen(this->value);
+      varToArr(outbuffer + offset, length_value);
+      offset += 4;
+      memcpy(outbuffer + offset, this->value, length_value);
+      offset += length_value;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      uint32_t length_value;
+      arrToVar(length_value, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_value; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_value-1]=0;
+      this->value = (char *)(inbuffer + offset-1);
+      offset += length_value;
+     return offset;
+    }
+
+    const char * getType(){ return "dynamic_reconfigure/StrParameter"; };
+    const char * getMD5(){ return "bc6ccc4a57f61779c8eaae61e9f422e0"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/encoder.h b/otto_controller_source/Inc/encoder.h
new file mode 100644 (file)
index 0000000..7d79a75
--- /dev/null
@@ -0,0 +1,15 @@
+#ifndef ENCODER_H
+#define ENCODER_H
+
+#include "stm32f7xx_hal_tim.h"
+
+class Encoder {
+ public:
+  TIM_HandleTypeDef timer_;
+
+  Encoder(TIM_HandleTypeDef timer);
+
+  int GetCount();
+  void ResetCount();
+};
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/ApplyBodyWrench.h b/otto_controller_source/Inc/gazebo_msgs/ApplyBodyWrench.h
new file mode 100644 (file)
index 0000000..e7af6bb
--- /dev/null
@@ -0,0 +1,199 @@
+#ifndef _ROS_SERVICE_ApplyBodyWrench_h
+#define _ROS_SERVICE_ApplyBodyWrench_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/duration.h"
+#include "geometry_msgs/Wrench.h"
+#include "ros/time.h"
+#include "geometry_msgs/Point.h"
+
+namespace gazebo_msgs
+{
+
+static const char APPLYBODYWRENCH[] = "gazebo_msgs/ApplyBodyWrench";
+
+  class ApplyBodyWrenchRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _body_name_type;
+      _body_name_type body_name;
+      typedef const char* _reference_frame_type;
+      _reference_frame_type reference_frame;
+      typedef geometry_msgs::Point _reference_point_type;
+      _reference_point_type reference_point;
+      typedef geometry_msgs::Wrench _wrench_type;
+      _wrench_type wrench;
+      typedef ros::Time _start_time_type;
+      _start_time_type start_time;
+      typedef ros::Duration _duration_type;
+      _duration_type duration;
+
+    ApplyBodyWrenchRequest():
+      body_name(""),
+      reference_frame(""),
+      reference_point(),
+      wrench(),
+      start_time(),
+      duration()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_body_name = strlen(this->body_name);
+      varToArr(outbuffer + offset, length_body_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->body_name, length_body_name);
+      offset += length_body_name;
+      uint32_t length_reference_frame = strlen(this->reference_frame);
+      varToArr(outbuffer + offset, length_reference_frame);
+      offset += 4;
+      memcpy(outbuffer + offset, this->reference_frame, length_reference_frame);
+      offset += length_reference_frame;
+      offset += this->reference_point.serialize(outbuffer + offset);
+      offset += this->wrench.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->start_time.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->start_time.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->start_time.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->start_time.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->start_time.sec);
+      *(outbuffer + offset + 0) = (this->start_time.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->start_time.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->start_time.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->start_time.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->start_time.nsec);
+      *(outbuffer + offset + 0) = (this->duration.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->duration.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->duration.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->duration.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->duration.sec);
+      *(outbuffer + offset + 0) = (this->duration.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->duration.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->duration.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->duration.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->duration.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_body_name;
+      arrToVar(length_body_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_body_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_body_name-1]=0;
+      this->body_name = (char *)(inbuffer + offset-1);
+      offset += length_body_name;
+      uint32_t length_reference_frame;
+      arrToVar(length_reference_frame, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_reference_frame; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_reference_frame-1]=0;
+      this->reference_frame = (char *)(inbuffer + offset-1);
+      offset += length_reference_frame;
+      offset += this->reference_point.deserialize(inbuffer + offset);
+      offset += this->wrench.deserialize(inbuffer + offset);
+      this->start_time.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->start_time.sec);
+      this->start_time.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->start_time.nsec);
+      this->duration.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->duration.sec);
+      this->duration.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->duration.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return APPLYBODYWRENCH; };
+    const char * getMD5(){ return "e37e6adf97eba5095baa77dffb71e5bd"; };
+
+  };
+
+  class ApplyBodyWrenchResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    ApplyBodyWrenchResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return APPLYBODYWRENCH; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class ApplyBodyWrench {
+    public:
+    typedef ApplyBodyWrenchRequest Request;
+    typedef ApplyBodyWrenchResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/ApplyJointEffort.h b/otto_controller_source/Inc/gazebo_msgs/ApplyJointEffort.h
new file mode 100644 (file)
index 0000000..38eb332
--- /dev/null
@@ -0,0 +1,175 @@
+#ifndef _ROS_SERVICE_ApplyJointEffort_h
+#define _ROS_SERVICE_ApplyJointEffort_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/duration.h"
+#include "ros/time.h"
+
+namespace gazebo_msgs
+{
+
+static const char APPLYJOINTEFFORT[] = "gazebo_msgs/ApplyJointEffort";
+
+  class ApplyJointEffortRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _joint_name_type;
+      _joint_name_type joint_name;
+      typedef float _effort_type;
+      _effort_type effort;
+      typedef ros::Time _start_time_type;
+      _start_time_type start_time;
+      typedef ros::Duration _duration_type;
+      _duration_type duration;
+
+    ApplyJointEffortRequest():
+      joint_name(""),
+      effort(0),
+      start_time(),
+      duration()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_joint_name = strlen(this->joint_name);
+      varToArr(outbuffer + offset, length_joint_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->joint_name, length_joint_name);
+      offset += length_joint_name;
+      offset += serializeAvrFloat64(outbuffer + offset, this->effort);
+      *(outbuffer + offset + 0) = (this->start_time.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->start_time.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->start_time.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->start_time.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->start_time.sec);
+      *(outbuffer + offset + 0) = (this->start_time.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->start_time.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->start_time.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->start_time.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->start_time.nsec);
+      *(outbuffer + offset + 0) = (this->duration.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->duration.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->duration.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->duration.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->duration.sec);
+      *(outbuffer + offset + 0) = (this->duration.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->duration.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->duration.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->duration.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->duration.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_joint_name;
+      arrToVar(length_joint_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_joint_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_joint_name-1]=0;
+      this->joint_name = (char *)(inbuffer + offset-1);
+      offset += length_joint_name;
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->effort));
+      this->start_time.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->start_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->start_time.sec);
+      this->start_time.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->start_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->start_time.nsec);
+      this->duration.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->duration.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->duration.sec);
+      this->duration.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->duration.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->duration.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return APPLYJOINTEFFORT; };
+    const char * getMD5(){ return "2c3396ab9af67a509ecd2167a8fe41a2"; };
+
+  };
+
+  class ApplyJointEffortResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    ApplyJointEffortResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return APPLYJOINTEFFORT; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class ApplyJointEffort {
+    public:
+    typedef ApplyJointEffortRequest Request;
+    typedef ApplyJointEffortResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/BodyRequest.h b/otto_controller_source/Inc/gazebo_msgs/BodyRequest.h
new file mode 100644 (file)
index 0000000..bb2106d
--- /dev/null
@@ -0,0 +1,87 @@
+#ifndef _ROS_SERVICE_BodyRequest_h
+#define _ROS_SERVICE_BodyRequest_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace gazebo_msgs
+{
+
+static const char BODYREQUEST[] = "gazebo_msgs/BodyRequest";
+
+  class BodyRequestRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _body_name_type;
+      _body_name_type body_name;
+
+    BodyRequestRequest():
+      body_name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_body_name = strlen(this->body_name);
+      varToArr(outbuffer + offset, length_body_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->body_name, length_body_name);
+      offset += length_body_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_body_name;
+      arrToVar(length_body_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_body_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_body_name-1]=0;
+      this->body_name = (char *)(inbuffer + offset-1);
+      offset += length_body_name;
+     return offset;
+    }
+
+    const char * getType(){ return BODYREQUEST; };
+    const char * getMD5(){ return "5eade9afe7f232d78005bd0cafeab755"; };
+
+  };
+
+  class BodyRequestResponse : public ros::Msg
+  {
+    public:
+
+    BodyRequestResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return BODYREQUEST; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class BodyRequest {
+    public:
+    typedef BodyRequestRequest Request;
+    typedef BodyRequestResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/ContactState.h b/otto_controller_source/Inc/gazebo_msgs/ContactState.h
new file mode 100644 (file)
index 0000000..eb91d93
--- /dev/null
@@ -0,0 +1,196 @@
+#ifndef _ROS_gazebo_msgs_ContactState_h
+#define _ROS_gazebo_msgs_ContactState_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Wrench.h"
+#include "geometry_msgs/Vector3.h"
+
+namespace gazebo_msgs
+{
+
+  class ContactState : public ros::Msg
+  {
+    public:
+      typedef const char* _info_type;
+      _info_type info;
+      typedef const char* _collision1_name_type;
+      _collision1_name_type collision1_name;
+      typedef const char* _collision2_name_type;
+      _collision2_name_type collision2_name;
+      uint32_t wrenches_length;
+      typedef geometry_msgs::Wrench _wrenches_type;
+      _wrenches_type st_wrenches;
+      _wrenches_type * wrenches;
+      typedef geometry_msgs::Wrench _total_wrench_type;
+      _total_wrench_type total_wrench;
+      uint32_t contact_positions_length;
+      typedef geometry_msgs::Vector3 _contact_positions_type;
+      _contact_positions_type st_contact_positions;
+      _contact_positions_type * contact_positions;
+      uint32_t contact_normals_length;
+      typedef geometry_msgs::Vector3 _contact_normals_type;
+      _contact_normals_type st_contact_normals;
+      _contact_normals_type * contact_normals;
+      uint32_t depths_length;
+      typedef float _depths_type;
+      _depths_type st_depths;
+      _depths_type * depths;
+
+    ContactState():
+      info(""),
+      collision1_name(""),
+      collision2_name(""),
+      wrenches_length(0), wrenches(NULL),
+      total_wrench(),
+      contact_positions_length(0), contact_positions(NULL),
+      contact_normals_length(0), contact_normals(NULL),
+      depths_length(0), depths(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_info = strlen(this->info);
+      varToArr(outbuffer + offset, length_info);
+      offset += 4;
+      memcpy(outbuffer + offset, this->info, length_info);
+      offset += length_info;
+      uint32_t length_collision1_name = strlen(this->collision1_name);
+      varToArr(outbuffer + offset, length_collision1_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->collision1_name, length_collision1_name);
+      offset += length_collision1_name;
+      uint32_t length_collision2_name = strlen(this->collision2_name);
+      varToArr(outbuffer + offset, length_collision2_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->collision2_name, length_collision2_name);
+      offset += length_collision2_name;
+      *(outbuffer + offset + 0) = (this->wrenches_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->wrenches_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->wrenches_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->wrenches_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->wrenches_length);
+      for( uint32_t i = 0; i < wrenches_length; i++){
+      offset += this->wrenches[i].serialize(outbuffer + offset);
+      }
+      offset += this->total_wrench.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->contact_positions_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->contact_positions_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->contact_positions_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->contact_positions_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->contact_positions_length);
+      for( uint32_t i = 0; i < contact_positions_length; i++){
+      offset += this->contact_positions[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->contact_normals_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->contact_normals_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->contact_normals_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->contact_normals_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->contact_normals_length);
+      for( uint32_t i = 0; i < contact_normals_length; i++){
+      offset += this->contact_normals[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->depths_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->depths_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->depths_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->depths_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->depths_length);
+      for( uint32_t i = 0; i < depths_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->depths[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_info;
+      arrToVar(length_info, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_info; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_info-1]=0;
+      this->info = (char *)(inbuffer + offset-1);
+      offset += length_info;
+      uint32_t length_collision1_name;
+      arrToVar(length_collision1_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_collision1_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_collision1_name-1]=0;
+      this->collision1_name = (char *)(inbuffer + offset-1);
+      offset += length_collision1_name;
+      uint32_t length_collision2_name;
+      arrToVar(length_collision2_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_collision2_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_collision2_name-1]=0;
+      this->collision2_name = (char *)(inbuffer + offset-1);
+      offset += length_collision2_name;
+      uint32_t wrenches_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      wrenches_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      wrenches_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      wrenches_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->wrenches_length);
+      if(wrenches_lengthT > wrenches_length)
+        this->wrenches = (geometry_msgs::Wrench*)realloc(this->wrenches, wrenches_lengthT * sizeof(geometry_msgs::Wrench));
+      wrenches_length = wrenches_lengthT;
+      for( uint32_t i = 0; i < wrenches_length; i++){
+      offset += this->st_wrenches.deserialize(inbuffer + offset);
+        memcpy( &(this->wrenches[i]), &(this->st_wrenches), sizeof(geometry_msgs::Wrench));
+      }
+      offset += this->total_wrench.deserialize(inbuffer + offset);
+      uint32_t contact_positions_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      contact_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      contact_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      contact_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->contact_positions_length);
+      if(contact_positions_lengthT > contact_positions_length)
+        this->contact_positions = (geometry_msgs::Vector3*)realloc(this->contact_positions, contact_positions_lengthT * sizeof(geometry_msgs::Vector3));
+      contact_positions_length = contact_positions_lengthT;
+      for( uint32_t i = 0; i < contact_positions_length; i++){
+      offset += this->st_contact_positions.deserialize(inbuffer + offset);
+        memcpy( &(this->contact_positions[i]), &(this->st_contact_positions), sizeof(geometry_msgs::Vector3));
+      }
+      uint32_t contact_normals_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      contact_normals_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      contact_normals_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      contact_normals_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->contact_normals_length);
+      if(contact_normals_lengthT > contact_normals_length)
+        this->contact_normals = (geometry_msgs::Vector3*)realloc(this->contact_normals, contact_normals_lengthT * sizeof(geometry_msgs::Vector3));
+      contact_normals_length = contact_normals_lengthT;
+      for( uint32_t i = 0; i < contact_normals_length; i++){
+      offset += this->st_contact_normals.deserialize(inbuffer + offset);
+        memcpy( &(this->contact_normals[i]), &(this->st_contact_normals), sizeof(geometry_msgs::Vector3));
+      }
+      uint32_t depths_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      depths_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      depths_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      depths_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->depths_length);
+      if(depths_lengthT > depths_length)
+        this->depths = (float*)realloc(this->depths, depths_lengthT * sizeof(float));
+      depths_length = depths_lengthT;
+      for( uint32_t i = 0; i < depths_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_depths));
+        memcpy( &(this->depths[i]), &(this->st_depths), sizeof(float));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "gazebo_msgs/ContactState"; };
+    const char * getMD5(){ return "48c0ffb054b8c444f870cecea1ee50d9"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/ContactsState.h b/otto_controller_source/Inc/gazebo_msgs/ContactsState.h
new file mode 100644 (file)
index 0000000..7f8eacf
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef _ROS_gazebo_msgs_ContactsState_h
+#define _ROS_gazebo_msgs_ContactsState_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "gazebo_msgs/ContactState.h"
+
+namespace gazebo_msgs
+{
+
+  class ContactsState : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t states_length;
+      typedef gazebo_msgs::ContactState _states_type;
+      _states_type st_states;
+      _states_type * states;
+
+    ContactsState():
+      header(),
+      states_length(0), states(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->states_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->states_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->states_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->states_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->states_length);
+      for( uint32_t i = 0; i < states_length; i++){
+      offset += this->states[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t states_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      states_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      states_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      states_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->states_length);
+      if(states_lengthT > states_length)
+        this->states = (gazebo_msgs::ContactState*)realloc(this->states, states_lengthT * sizeof(gazebo_msgs::ContactState));
+      states_length = states_lengthT;
+      for( uint32_t i = 0; i < states_length; i++){
+      offset += this->st_states.deserialize(inbuffer + offset);
+        memcpy( &(this->states[i]), &(this->st_states), sizeof(gazebo_msgs::ContactState));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "gazebo_msgs/ContactsState"; };
+    const char * getMD5(){ return "acbcb1601a8e525bf72509f18e6f668d"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/DeleteLight.h b/otto_controller_source/Inc/gazebo_msgs/DeleteLight.h
new file mode 100644 (file)
index 0000000..54a9c5d
--- /dev/null
@@ -0,0 +1,122 @@
+#ifndef _ROS_SERVICE_DeleteLight_h
+#define _ROS_SERVICE_DeleteLight_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace gazebo_msgs
+{
+
+static const char DELETELIGHT[] = "gazebo_msgs/DeleteLight";
+
+  class DeleteLightRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _light_name_type;
+      _light_name_type light_name;
+
+    DeleteLightRequest():
+      light_name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_light_name = strlen(this->light_name);
+      varToArr(outbuffer + offset, length_light_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->light_name, length_light_name);
+      offset += length_light_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_light_name;
+      arrToVar(length_light_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_light_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_light_name-1]=0;
+      this->light_name = (char *)(inbuffer + offset-1);
+      offset += length_light_name;
+     return offset;
+    }
+
+    const char * getType(){ return DELETELIGHT; };
+    const char * getMD5(){ return "4fb676dfb4741fc866365702a859441c"; };
+
+  };
+
+  class DeleteLightResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    DeleteLightResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return DELETELIGHT; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class DeleteLight {
+    public:
+    typedef DeleteLightRequest Request;
+    typedef DeleteLightResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/DeleteModel.h b/otto_controller_source/Inc/gazebo_msgs/DeleteModel.h
new file mode 100644 (file)
index 0000000..00da12d
--- /dev/null
@@ -0,0 +1,122 @@
+#ifndef _ROS_SERVICE_DeleteModel_h
+#define _ROS_SERVICE_DeleteModel_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace gazebo_msgs
+{
+
+static const char DELETEMODEL[] = "gazebo_msgs/DeleteModel";
+
+  class DeleteModelRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _model_name_type;
+      _model_name_type model_name;
+
+    DeleteModelRequest():
+      model_name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_model_name = strlen(this->model_name);
+      varToArr(outbuffer + offset, length_model_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->model_name, length_model_name);
+      offset += length_model_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_model_name;
+      arrToVar(length_model_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_model_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_model_name-1]=0;
+      this->model_name = (char *)(inbuffer + offset-1);
+      offset += length_model_name;
+     return offset;
+    }
+
+    const char * getType(){ return DELETEMODEL; };
+    const char * getMD5(){ return "ea31c8eab6fc401383cf528a7c0984ba"; };
+
+  };
+
+  class DeleteModelResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    DeleteModelResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return DELETEMODEL; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class DeleteModel {
+    public:
+    typedef DeleteModelRequest Request;
+    typedef DeleteModelResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/GetJointProperties.h b/otto_controller_source/Inc/gazebo_msgs/GetJointProperties.h
new file mode 100644 (file)
index 0000000..10c386b
--- /dev/null
@@ -0,0 +1,210 @@
+#ifndef _ROS_SERVICE_GetJointProperties_h
+#define _ROS_SERVICE_GetJointProperties_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace gazebo_msgs
+{
+
+static const char GETJOINTPROPERTIES[] = "gazebo_msgs/GetJointProperties";
+
+  class GetJointPropertiesRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _joint_name_type;
+      _joint_name_type joint_name;
+
+    GetJointPropertiesRequest():
+      joint_name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_joint_name = strlen(this->joint_name);
+      varToArr(outbuffer + offset, length_joint_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->joint_name, length_joint_name);
+      offset += length_joint_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_joint_name;
+      arrToVar(length_joint_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_joint_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_joint_name-1]=0;
+      this->joint_name = (char *)(inbuffer + offset-1);
+      offset += length_joint_name;
+     return offset;
+    }
+
+    const char * getType(){ return GETJOINTPROPERTIES; };
+    const char * getMD5(){ return "0be1351618e1dc030eb7959d9a4902de"; };
+
+  };
+
+  class GetJointPropertiesResponse : public ros::Msg
+  {
+    public:
+      typedef uint8_t _type_type;
+      _type_type type;
+      uint32_t damping_length;
+      typedef float _damping_type;
+      _damping_type st_damping;
+      _damping_type * damping;
+      uint32_t position_length;
+      typedef float _position_type;
+      _position_type st_position;
+      _position_type * position;
+      uint32_t rate_length;
+      typedef float _rate_type;
+      _rate_type st_rate;
+      _rate_type * rate;
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+      enum { REVOLUTE =  0                 };
+      enum { CONTINUOUS =  1                 };
+      enum { PRISMATIC =  2                 };
+      enum { FIXED =  3                 };
+      enum { BALL =  4                 };
+      enum { UNIVERSAL =  5                 };
+
+    GetJointPropertiesResponse():
+      type(0),
+      damping_length(0), damping(NULL),
+      position_length(0), position(NULL),
+      rate_length(0), rate(NULL),
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->type);
+      *(outbuffer + offset + 0) = (this->damping_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->damping_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->damping_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->damping_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->damping_length);
+      for( uint32_t i = 0; i < damping_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->damping[i]);
+      }
+      *(outbuffer + offset + 0) = (this->position_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->position_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->position_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->position_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->position_length);
+      for( uint32_t i = 0; i < position_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->position[i]);
+      }
+      *(outbuffer + offset + 0) = (this->rate_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->rate_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->rate_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->rate_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->rate_length);
+      for( uint32_t i = 0; i < rate_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->rate[i]);
+      }
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->type =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->type);
+      uint32_t damping_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->damping_length);
+      if(damping_lengthT > damping_length)
+        this->damping = (float*)realloc(this->damping, damping_lengthT * sizeof(float));
+      damping_length = damping_lengthT;
+      for( uint32_t i = 0; i < damping_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_damping));
+        memcpy( &(this->damping[i]), &(this->st_damping), sizeof(float));
+      }
+      uint32_t position_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      position_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      position_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      position_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->position_length);
+      if(position_lengthT > position_length)
+        this->position = (float*)realloc(this->position, position_lengthT * sizeof(float));
+      position_length = position_lengthT;
+      for( uint32_t i = 0; i < position_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_position));
+        memcpy( &(this->position[i]), &(this->st_position), sizeof(float));
+      }
+      uint32_t rate_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      rate_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      rate_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      rate_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->rate_length);
+      if(rate_lengthT > rate_length)
+        this->rate = (float*)realloc(this->rate, rate_lengthT * sizeof(float));
+      rate_length = rate_lengthT;
+      for( uint32_t i = 0; i < rate_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_rate));
+        memcpy( &(this->rate[i]), &(this->st_rate), sizeof(float));
+      }
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return GETJOINTPROPERTIES; };
+    const char * getMD5(){ return "cd7b30a39faa372283dc94c5f6457f82"; };
+
+  };
+
+  class GetJointProperties {
+    public:
+    typedef GetJointPropertiesRequest Request;
+    typedef GetJointPropertiesResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/GetLightProperties.h b/otto_controller_source/Inc/gazebo_msgs/GetLightProperties.h
new file mode 100644 (file)
index 0000000..94442fc
--- /dev/null
@@ -0,0 +1,143 @@
+#ifndef _ROS_SERVICE_GetLightProperties_h
+#define _ROS_SERVICE_GetLightProperties_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/ColorRGBA.h"
+
+namespace gazebo_msgs
+{
+
+static const char GETLIGHTPROPERTIES[] = "gazebo_msgs/GetLightProperties";
+
+  class GetLightPropertiesRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _light_name_type;
+      _light_name_type light_name;
+
+    GetLightPropertiesRequest():
+      light_name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_light_name = strlen(this->light_name);
+      varToArr(outbuffer + offset, length_light_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->light_name, length_light_name);
+      offset += length_light_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_light_name;
+      arrToVar(length_light_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_light_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_light_name-1]=0;
+      this->light_name = (char *)(inbuffer + offset-1);
+      offset += length_light_name;
+     return offset;
+    }
+
+    const char * getType(){ return GETLIGHTPROPERTIES; };
+    const char * getMD5(){ return "4fb676dfb4741fc866365702a859441c"; };
+
+  };
+
+  class GetLightPropertiesResponse : public ros::Msg
+  {
+    public:
+      typedef std_msgs::ColorRGBA _diffuse_type;
+      _diffuse_type diffuse;
+      typedef float _attenuation_constant_type;
+      _attenuation_constant_type attenuation_constant;
+      typedef float _attenuation_linear_type;
+      _attenuation_linear_type attenuation_linear;
+      typedef float _attenuation_quadratic_type;
+      _attenuation_quadratic_type attenuation_quadratic;
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    GetLightPropertiesResponse():
+      diffuse(),
+      attenuation_constant(0),
+      attenuation_linear(0),
+      attenuation_quadratic(0),
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->diffuse.serialize(outbuffer + offset);
+      offset += serializeAvrFloat64(outbuffer + offset, this->attenuation_constant);
+      offset += serializeAvrFloat64(outbuffer + offset, this->attenuation_linear);
+      offset += serializeAvrFloat64(outbuffer + offset, this->attenuation_quadratic);
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->diffuse.deserialize(inbuffer + offset);
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->attenuation_constant));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->attenuation_linear));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->attenuation_quadratic));
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return GETLIGHTPROPERTIES; };
+    const char * getMD5(){ return "9a19ddd5aab4c13b7643d1722c709f1f"; };
+
+  };
+
+  class GetLightProperties {
+    public:
+    typedef GetLightPropertiesRequest Request;
+    typedef GetLightPropertiesResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/GetLinkProperties.h b/otto_controller_source/Inc/gazebo_msgs/GetLinkProperties.h
new file mode 100644 (file)
index 0000000..0d2bc43
--- /dev/null
@@ -0,0 +1,181 @@
+#ifndef _ROS_SERVICE_GetLinkProperties_h
+#define _ROS_SERVICE_GetLinkProperties_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Pose.h"
+
+namespace gazebo_msgs
+{
+
+static const char GETLINKPROPERTIES[] = "gazebo_msgs/GetLinkProperties";
+
+  class GetLinkPropertiesRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _link_name_type;
+      _link_name_type link_name;
+
+    GetLinkPropertiesRequest():
+      link_name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_link_name = strlen(this->link_name);
+      varToArr(outbuffer + offset, length_link_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->link_name, length_link_name);
+      offset += length_link_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_link_name;
+      arrToVar(length_link_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_link_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_link_name-1]=0;
+      this->link_name = (char *)(inbuffer + offset-1);
+      offset += length_link_name;
+     return offset;
+    }
+
+    const char * getType(){ return GETLINKPROPERTIES; };
+    const char * getMD5(){ return "7d82d60381f1b66a30f2157f60884345"; };
+
+  };
+
+  class GetLinkPropertiesResponse : public ros::Msg
+  {
+    public:
+      typedef geometry_msgs::Pose _com_type;
+      _com_type com;
+      typedef bool _gravity_mode_type;
+      _gravity_mode_type gravity_mode;
+      typedef float _mass_type;
+      _mass_type mass;
+      typedef float _ixx_type;
+      _ixx_type ixx;
+      typedef float _ixy_type;
+      _ixy_type ixy;
+      typedef float _ixz_type;
+      _ixz_type ixz;
+      typedef float _iyy_type;
+      _iyy_type iyy;
+      typedef float _iyz_type;
+      _iyz_type iyz;
+      typedef float _izz_type;
+      _izz_type izz;
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    GetLinkPropertiesResponse():
+      com(),
+      gravity_mode(0),
+      mass(0),
+      ixx(0),
+      ixy(0),
+      ixz(0),
+      iyy(0),
+      iyz(0),
+      izz(0),
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->com.serialize(outbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_gravity_mode;
+      u_gravity_mode.real = this->gravity_mode;
+      *(outbuffer + offset + 0) = (u_gravity_mode.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->gravity_mode);
+      offset += serializeAvrFloat64(outbuffer + offset, this->mass);
+      offset += serializeAvrFloat64(outbuffer + offset, this->ixx);
+      offset += serializeAvrFloat64(outbuffer + offset, this->ixy);
+      offset += serializeAvrFloat64(outbuffer + offset, this->ixz);
+      offset += serializeAvrFloat64(outbuffer + offset, this->iyy);
+      offset += serializeAvrFloat64(outbuffer + offset, this->iyz);
+      offset += serializeAvrFloat64(outbuffer + offset, this->izz);
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->com.deserialize(inbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_gravity_mode;
+      u_gravity_mode.base = 0;
+      u_gravity_mode.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->gravity_mode = u_gravity_mode.real;
+      offset += sizeof(this->gravity_mode);
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->mass));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->ixx));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->ixy));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->ixz));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->iyy));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->iyz));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->izz));
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return GETLINKPROPERTIES; };
+    const char * getMD5(){ return "a8619f92d17cfcc3958c0fd13299443d"; };
+
+  };
+
+  class GetLinkProperties {
+    public:
+    typedef GetLinkPropertiesRequest Request;
+    typedef GetLinkPropertiesResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/GetLinkState.h b/otto_controller_source/Inc/gazebo_msgs/GetLinkState.h
new file mode 100644 (file)
index 0000000..5e20764
--- /dev/null
@@ -0,0 +1,145 @@
+#ifndef _ROS_SERVICE_GetLinkState_h
+#define _ROS_SERVICE_GetLinkState_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "gazebo_msgs/LinkState.h"
+
+namespace gazebo_msgs
+{
+
+static const char GETLINKSTATE[] = "gazebo_msgs/GetLinkState";
+
+  class GetLinkStateRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _link_name_type;
+      _link_name_type link_name;
+      typedef const char* _reference_frame_type;
+      _reference_frame_type reference_frame;
+
+    GetLinkStateRequest():
+      link_name(""),
+      reference_frame("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_link_name = strlen(this->link_name);
+      varToArr(outbuffer + offset, length_link_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->link_name, length_link_name);
+      offset += length_link_name;
+      uint32_t length_reference_frame = strlen(this->reference_frame);
+      varToArr(outbuffer + offset, length_reference_frame);
+      offset += 4;
+      memcpy(outbuffer + offset, this->reference_frame, length_reference_frame);
+      offset += length_reference_frame;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_link_name;
+      arrToVar(length_link_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_link_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_link_name-1]=0;
+      this->link_name = (char *)(inbuffer + offset-1);
+      offset += length_link_name;
+      uint32_t length_reference_frame;
+      arrToVar(length_reference_frame, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_reference_frame; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_reference_frame-1]=0;
+      this->reference_frame = (char *)(inbuffer + offset-1);
+      offset += length_reference_frame;
+     return offset;
+    }
+
+    const char * getType(){ return GETLINKSTATE; };
+    const char * getMD5(){ return "7551675c30aaa71f7c288d4864552001"; };
+
+  };
+
+  class GetLinkStateResponse : public ros::Msg
+  {
+    public:
+      typedef gazebo_msgs::LinkState _link_state_type;
+      _link_state_type link_state;
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    GetLinkStateResponse():
+      link_state(),
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->link_state.serialize(outbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->link_state.deserialize(inbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return GETLINKSTATE; };
+    const char * getMD5(){ return "8ba55ad34f9c072e75c0de57b089753b"; };
+
+  };
+
+  class GetLinkState {
+    public:
+    typedef GetLinkStateRequest Request;
+    typedef GetLinkStateResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/GetModelProperties.h b/otto_controller_source/Inc/gazebo_msgs/GetModelProperties.h
new file mode 100644 (file)
index 0000000..082e688
--- /dev/null
@@ -0,0 +1,322 @@
+#ifndef _ROS_SERVICE_GetModelProperties_h
+#define _ROS_SERVICE_GetModelProperties_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace gazebo_msgs
+{
+
+static const char GETMODELPROPERTIES[] = "gazebo_msgs/GetModelProperties";
+
+  class GetModelPropertiesRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _model_name_type;
+      _model_name_type model_name;
+
+    GetModelPropertiesRequest():
+      model_name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_model_name = strlen(this->model_name);
+      varToArr(outbuffer + offset, length_model_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->model_name, length_model_name);
+      offset += length_model_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_model_name;
+      arrToVar(length_model_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_model_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_model_name-1]=0;
+      this->model_name = (char *)(inbuffer + offset-1);
+      offset += length_model_name;
+     return offset;
+    }
+
+    const char * getType(){ return GETMODELPROPERTIES; };
+    const char * getMD5(){ return "ea31c8eab6fc401383cf528a7c0984ba"; };
+
+  };
+
+  class GetModelPropertiesResponse : public ros::Msg
+  {
+    public:
+      typedef const char* _parent_model_name_type;
+      _parent_model_name_type parent_model_name;
+      typedef const char* _canonical_body_name_type;
+      _canonical_body_name_type canonical_body_name;
+      uint32_t body_names_length;
+      typedef char* _body_names_type;
+      _body_names_type st_body_names;
+      _body_names_type * body_names;
+      uint32_t geom_names_length;
+      typedef char* _geom_names_type;
+      _geom_names_type st_geom_names;
+      _geom_names_type * geom_names;
+      uint32_t joint_names_length;
+      typedef char* _joint_names_type;
+      _joint_names_type st_joint_names;
+      _joint_names_type * joint_names;
+      uint32_t child_model_names_length;
+      typedef char* _child_model_names_type;
+      _child_model_names_type st_child_model_names;
+      _child_model_names_type * child_model_names;
+      typedef bool _is_static_type;
+      _is_static_type is_static;
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    GetModelPropertiesResponse():
+      parent_model_name(""),
+      canonical_body_name(""),
+      body_names_length(0), body_names(NULL),
+      geom_names_length(0), geom_names(NULL),
+      joint_names_length(0), joint_names(NULL),
+      child_model_names_length(0), child_model_names(NULL),
+      is_static(0),
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_parent_model_name = strlen(this->parent_model_name);
+      varToArr(outbuffer + offset, length_parent_model_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->parent_model_name, length_parent_model_name);
+      offset += length_parent_model_name;
+      uint32_t length_canonical_body_name = strlen(this->canonical_body_name);
+      varToArr(outbuffer + offset, length_canonical_body_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->canonical_body_name, length_canonical_body_name);
+      offset += length_canonical_body_name;
+      *(outbuffer + offset + 0) = (this->body_names_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->body_names_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->body_names_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->body_names_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->body_names_length);
+      for( uint32_t i = 0; i < body_names_length; i++){
+      uint32_t length_body_namesi = strlen(this->body_names[i]);
+      varToArr(outbuffer + offset, length_body_namesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->body_names[i], length_body_namesi);
+      offset += length_body_namesi;
+      }
+      *(outbuffer + offset + 0) = (this->geom_names_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->geom_names_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->geom_names_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->geom_names_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->geom_names_length);
+      for( uint32_t i = 0; i < geom_names_length; i++){
+      uint32_t length_geom_namesi = strlen(this->geom_names[i]);
+      varToArr(outbuffer + offset, length_geom_namesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->geom_names[i], length_geom_namesi);
+      offset += length_geom_namesi;
+      }
+      *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->joint_names_length);
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_joint_namesi = strlen(this->joint_names[i]);
+      varToArr(outbuffer + offset, length_joint_namesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi);
+      offset += length_joint_namesi;
+      }
+      *(outbuffer + offset + 0) = (this->child_model_names_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->child_model_names_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->child_model_names_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->child_model_names_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->child_model_names_length);
+      for( uint32_t i = 0; i < child_model_names_length; i++){
+      uint32_t length_child_model_namesi = strlen(this->child_model_names[i]);
+      varToArr(outbuffer + offset, length_child_model_namesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->child_model_names[i], length_child_model_namesi);
+      offset += length_child_model_namesi;
+      }
+      union {
+        bool real;
+        uint8_t base;
+      } u_is_static;
+      u_is_static.real = this->is_static;
+      *(outbuffer + offset + 0) = (u_is_static.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->is_static);
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_parent_model_name;
+      arrToVar(length_parent_model_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_parent_model_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_parent_model_name-1]=0;
+      this->parent_model_name = (char *)(inbuffer + offset-1);
+      offset += length_parent_model_name;
+      uint32_t length_canonical_body_name;
+      arrToVar(length_canonical_body_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_canonical_body_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_canonical_body_name-1]=0;
+      this->canonical_body_name = (char *)(inbuffer + offset-1);
+      offset += length_canonical_body_name;
+      uint32_t body_names_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      body_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      body_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      body_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->body_names_length);
+      if(body_names_lengthT > body_names_length)
+        this->body_names = (char**)realloc(this->body_names, body_names_lengthT * sizeof(char*));
+      body_names_length = body_names_lengthT;
+      for( uint32_t i = 0; i < body_names_length; i++){
+      uint32_t length_st_body_names;
+      arrToVar(length_st_body_names, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_body_names; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_body_names-1]=0;
+      this->st_body_names = (char *)(inbuffer + offset-1);
+      offset += length_st_body_names;
+        memcpy( &(this->body_names[i]), &(this->st_body_names), sizeof(char*));
+      }
+      uint32_t geom_names_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      geom_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      geom_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      geom_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->geom_names_length);
+      if(geom_names_lengthT > geom_names_length)
+        this->geom_names = (char**)realloc(this->geom_names, geom_names_lengthT * sizeof(char*));
+      geom_names_length = geom_names_lengthT;
+      for( uint32_t i = 0; i < geom_names_length; i++){
+      uint32_t length_st_geom_names;
+      arrToVar(length_st_geom_names, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_geom_names; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_geom_names-1]=0;
+      this->st_geom_names = (char *)(inbuffer + offset-1);
+      offset += length_st_geom_names;
+        memcpy( &(this->geom_names[i]), &(this->st_geom_names), sizeof(char*));
+      }
+      uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->joint_names_length);
+      if(joint_names_lengthT > joint_names_length)
+        this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*));
+      joint_names_length = joint_names_lengthT;
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_st_joint_names;
+      arrToVar(length_st_joint_names, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_joint_names-1]=0;
+      this->st_joint_names = (char *)(inbuffer + offset-1);
+      offset += length_st_joint_names;
+        memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*));
+      }
+      uint32_t child_model_names_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      child_model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      child_model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      child_model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->child_model_names_length);
+      if(child_model_names_lengthT > child_model_names_length)
+        this->child_model_names = (char**)realloc(this->child_model_names, child_model_names_lengthT * sizeof(char*));
+      child_model_names_length = child_model_names_lengthT;
+      for( uint32_t i = 0; i < child_model_names_length; i++){
+      uint32_t length_st_child_model_names;
+      arrToVar(length_st_child_model_names, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_child_model_names; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_child_model_names-1]=0;
+      this->st_child_model_names = (char *)(inbuffer + offset-1);
+      offset += length_st_child_model_names;
+        memcpy( &(this->child_model_names[i]), &(this->st_child_model_names), sizeof(char*));
+      }
+      union {
+        bool real;
+        uint8_t base;
+      } u_is_static;
+      u_is_static.base = 0;
+      u_is_static.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->is_static = u_is_static.real;
+      offset += sizeof(this->is_static);
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return GETMODELPROPERTIES; };
+    const char * getMD5(){ return "b7f370938ef77b464b95f1bab3ec5028"; };
+
+  };
+
+  class GetModelProperties {
+    public:
+    typedef GetModelPropertiesRequest Request;
+    typedef GetModelPropertiesResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/GetModelState.h b/otto_controller_source/Inc/gazebo_msgs/GetModelState.h
new file mode 100644 (file)
index 0000000..0dbcc81
--- /dev/null
@@ -0,0 +1,157 @@
+#ifndef _ROS_SERVICE_GetModelState_h
+#define _ROS_SERVICE_GetModelState_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Pose.h"
+#include "geometry_msgs/Twist.h"
+#include "std_msgs/Header.h"
+
+namespace gazebo_msgs
+{
+
+static const char GETMODELSTATE[] = "gazebo_msgs/GetModelState";
+
+  class GetModelStateRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _model_name_type;
+      _model_name_type model_name;
+      typedef const char* _relative_entity_name_type;
+      _relative_entity_name_type relative_entity_name;
+
+    GetModelStateRequest():
+      model_name(""),
+      relative_entity_name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_model_name = strlen(this->model_name);
+      varToArr(outbuffer + offset, length_model_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->model_name, length_model_name);
+      offset += length_model_name;
+      uint32_t length_relative_entity_name = strlen(this->relative_entity_name);
+      varToArr(outbuffer + offset, length_relative_entity_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->relative_entity_name, length_relative_entity_name);
+      offset += length_relative_entity_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_model_name;
+      arrToVar(length_model_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_model_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_model_name-1]=0;
+      this->model_name = (char *)(inbuffer + offset-1);
+      offset += length_model_name;
+      uint32_t length_relative_entity_name;
+      arrToVar(length_relative_entity_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_relative_entity_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_relative_entity_name-1]=0;
+      this->relative_entity_name = (char *)(inbuffer + offset-1);
+      offset += length_relative_entity_name;
+     return offset;
+    }
+
+    const char * getType(){ return GETMODELSTATE; };
+    const char * getMD5(){ return "19d412713cefe4a67437e17a951e759e"; };
+
+  };
+
+  class GetModelStateResponse : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Pose _pose_type;
+      _pose_type pose;
+      typedef geometry_msgs::Twist _twist_type;
+      _twist_type twist;
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    GetModelStateResponse():
+      header(),
+      pose(),
+      twist(),
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->pose.serialize(outbuffer + offset);
+      offset += this->twist.serialize(outbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->pose.deserialize(inbuffer + offset);
+      offset += this->twist.deserialize(inbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return GETMODELSTATE; };
+    const char * getMD5(){ return "ccd51739bb00f0141629e87b792e92b9"; };
+
+  };
+
+  class GetModelState {
+    public:
+    typedef GetModelStateRequest Request;
+    typedef GetModelStateResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/GetPhysicsProperties.h b/otto_controller_source/Inc/gazebo_msgs/GetPhysicsProperties.h
new file mode 100644 (file)
index 0000000..9b45854
--- /dev/null
@@ -0,0 +1,145 @@
+#ifndef _ROS_SERVICE_GetPhysicsProperties_h
+#define _ROS_SERVICE_GetPhysicsProperties_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Vector3.h"
+#include "gazebo_msgs/ODEPhysics.h"
+
+namespace gazebo_msgs
+{
+
+static const char GETPHYSICSPROPERTIES[] = "gazebo_msgs/GetPhysicsProperties";
+
+  class GetPhysicsPropertiesRequest : public ros::Msg
+  {
+    public:
+
+    GetPhysicsPropertiesRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return GETPHYSICSPROPERTIES; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class GetPhysicsPropertiesResponse : public ros::Msg
+  {
+    public:
+      typedef float _time_step_type;
+      _time_step_type time_step;
+      typedef bool _pause_type;
+      _pause_type pause;
+      typedef float _max_update_rate_type;
+      _max_update_rate_type max_update_rate;
+      typedef geometry_msgs::Vector3 _gravity_type;
+      _gravity_type gravity;
+      typedef gazebo_msgs::ODEPhysics _ode_config_type;
+      _ode_config_type ode_config;
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    GetPhysicsPropertiesResponse():
+      time_step(0),
+      pause(0),
+      max_update_rate(0),
+      gravity(),
+      ode_config(),
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += serializeAvrFloat64(outbuffer + offset, this->time_step);
+      union {
+        bool real;
+        uint8_t base;
+      } u_pause;
+      u_pause.real = this->pause;
+      *(outbuffer + offset + 0) = (u_pause.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->pause);
+      offset += serializeAvrFloat64(outbuffer + offset, this->max_update_rate);
+      offset += this->gravity.serialize(outbuffer + offset);
+      offset += this->ode_config.serialize(outbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->time_step));
+      union {
+        bool real;
+        uint8_t base;
+      } u_pause;
+      u_pause.base = 0;
+      u_pause.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->pause = u_pause.real;
+      offset += sizeof(this->pause);
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->max_update_rate));
+      offset += this->gravity.deserialize(inbuffer + offset);
+      offset += this->ode_config.deserialize(inbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return GETPHYSICSPROPERTIES; };
+    const char * getMD5(){ return "575a5e74786981b7df2e3afc567693a6"; };
+
+  };
+
+  class GetPhysicsProperties {
+    public:
+    typedef GetPhysicsPropertiesRequest Request;
+    typedef GetPhysicsPropertiesResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/GetWorldProperties.h b/otto_controller_source/Inc/gazebo_msgs/GetWorldProperties.h
new file mode 100644 (file)
index 0000000..d576f87
--- /dev/null
@@ -0,0 +1,165 @@
+#ifndef _ROS_SERVICE_GetWorldProperties_h
+#define _ROS_SERVICE_GetWorldProperties_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace gazebo_msgs
+{
+
+static const char GETWORLDPROPERTIES[] = "gazebo_msgs/GetWorldProperties";
+
+  class GetWorldPropertiesRequest : public ros::Msg
+  {
+    public:
+
+    GetWorldPropertiesRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return GETWORLDPROPERTIES; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class GetWorldPropertiesResponse : public ros::Msg
+  {
+    public:
+      typedef float _sim_time_type;
+      _sim_time_type sim_time;
+      uint32_t model_names_length;
+      typedef char* _model_names_type;
+      _model_names_type st_model_names;
+      _model_names_type * model_names;
+      typedef bool _rendering_enabled_type;
+      _rendering_enabled_type rendering_enabled;
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    GetWorldPropertiesResponse():
+      sim_time(0),
+      model_names_length(0), model_names(NULL),
+      rendering_enabled(0),
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += serializeAvrFloat64(outbuffer + offset, this->sim_time);
+      *(outbuffer + offset + 0) = (this->model_names_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->model_names_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->model_names_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->model_names_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->model_names_length);
+      for( uint32_t i = 0; i < model_names_length; i++){
+      uint32_t length_model_namesi = strlen(this->model_names[i]);
+      varToArr(outbuffer + offset, length_model_namesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->model_names[i], length_model_namesi);
+      offset += length_model_namesi;
+      }
+      union {
+        bool real;
+        uint8_t base;
+      } u_rendering_enabled;
+      u_rendering_enabled.real = this->rendering_enabled;
+      *(outbuffer + offset + 0) = (u_rendering_enabled.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->rendering_enabled);
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->sim_time));
+      uint32_t model_names_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      model_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->model_names_length);
+      if(model_names_lengthT > model_names_length)
+        this->model_names = (char**)realloc(this->model_names, model_names_lengthT * sizeof(char*));
+      model_names_length = model_names_lengthT;
+      for( uint32_t i = 0; i < model_names_length; i++){
+      uint32_t length_st_model_names;
+      arrToVar(length_st_model_names, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_model_names; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_model_names-1]=0;
+      this->st_model_names = (char *)(inbuffer + offset-1);
+      offset += length_st_model_names;
+        memcpy( &(this->model_names[i]), &(this->st_model_names), sizeof(char*));
+      }
+      union {
+        bool real;
+        uint8_t base;
+      } u_rendering_enabled;
+      u_rendering_enabled.base = 0;
+      u_rendering_enabled.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->rendering_enabled = u_rendering_enabled.real;
+      offset += sizeof(this->rendering_enabled);
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return GETWORLDPROPERTIES; };
+    const char * getMD5(){ return "36bb0f2eccf4d8be971410c22818ba3f"; };
+
+  };
+
+  class GetWorldProperties {
+    public:
+    typedef GetWorldPropertiesRequest Request;
+    typedef GetWorldPropertiesResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/JointRequest.h b/otto_controller_source/Inc/gazebo_msgs/JointRequest.h
new file mode 100644 (file)
index 0000000..6c2c13e
--- /dev/null
@@ -0,0 +1,87 @@
+#ifndef _ROS_SERVICE_JointRequest_h
+#define _ROS_SERVICE_JointRequest_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace gazebo_msgs
+{
+
+static const char JOINTREQUEST[] = "gazebo_msgs/JointRequest";
+
+  class JointRequestRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _joint_name_type;
+      _joint_name_type joint_name;
+
+    JointRequestRequest():
+      joint_name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_joint_name = strlen(this->joint_name);
+      varToArr(outbuffer + offset, length_joint_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->joint_name, length_joint_name);
+      offset += length_joint_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_joint_name;
+      arrToVar(length_joint_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_joint_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_joint_name-1]=0;
+      this->joint_name = (char *)(inbuffer + offset-1);
+      offset += length_joint_name;
+     return offset;
+    }
+
+    const char * getType(){ return JOINTREQUEST; };
+    const char * getMD5(){ return "0be1351618e1dc030eb7959d9a4902de"; };
+
+  };
+
+  class JointRequestResponse : public ros::Msg
+  {
+    public:
+
+    JointRequestResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return JOINTREQUEST; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class JointRequest {
+    public:
+    typedef JointRequestRequest Request;
+    typedef JointRequestResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/LinkState.h b/otto_controller_source/Inc/gazebo_msgs/LinkState.h
new file mode 100644 (file)
index 0000000..6f476a1
--- /dev/null
@@ -0,0 +1,84 @@
+#ifndef _ROS_gazebo_msgs_LinkState_h
+#define _ROS_gazebo_msgs_LinkState_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Pose.h"
+#include "geometry_msgs/Twist.h"
+
+namespace gazebo_msgs
+{
+
+  class LinkState : public ros::Msg
+  {
+    public:
+      typedef const char* _link_name_type;
+      _link_name_type link_name;
+      typedef geometry_msgs::Pose _pose_type;
+      _pose_type pose;
+      typedef geometry_msgs::Twist _twist_type;
+      _twist_type twist;
+      typedef const char* _reference_frame_type;
+      _reference_frame_type reference_frame;
+
+    LinkState():
+      link_name(""),
+      pose(),
+      twist(),
+      reference_frame("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_link_name = strlen(this->link_name);
+      varToArr(outbuffer + offset, length_link_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->link_name, length_link_name);
+      offset += length_link_name;
+      offset += this->pose.serialize(outbuffer + offset);
+      offset += this->twist.serialize(outbuffer + offset);
+      uint32_t length_reference_frame = strlen(this->reference_frame);
+      varToArr(outbuffer + offset, length_reference_frame);
+      offset += 4;
+      memcpy(outbuffer + offset, this->reference_frame, length_reference_frame);
+      offset += length_reference_frame;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_link_name;
+      arrToVar(length_link_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_link_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_link_name-1]=0;
+      this->link_name = (char *)(inbuffer + offset-1);
+      offset += length_link_name;
+      offset += this->pose.deserialize(inbuffer + offset);
+      offset += this->twist.deserialize(inbuffer + offset);
+      uint32_t length_reference_frame;
+      arrToVar(length_reference_frame, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_reference_frame; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_reference_frame-1]=0;
+      this->reference_frame = (char *)(inbuffer + offset-1);
+      offset += length_reference_frame;
+     return offset;
+    }
+
+    const char * getType(){ return "gazebo_msgs/LinkState"; };
+    const char * getMD5(){ return "0818ebbf28ce3a08d48ab1eaa7309ebe"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/LinkStates.h b/otto_controller_source/Inc/gazebo_msgs/LinkStates.h
new file mode 100644 (file)
index 0000000..33c154b
--- /dev/null
@@ -0,0 +1,127 @@
+#ifndef _ROS_gazebo_msgs_LinkStates_h
+#define _ROS_gazebo_msgs_LinkStates_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Pose.h"
+#include "geometry_msgs/Twist.h"
+
+namespace gazebo_msgs
+{
+
+  class LinkStates : public ros::Msg
+  {
+    public:
+      uint32_t name_length;
+      typedef char* _name_type;
+      _name_type st_name;
+      _name_type * name;
+      uint32_t pose_length;
+      typedef geometry_msgs::Pose _pose_type;
+      _pose_type st_pose;
+      _pose_type * pose;
+      uint32_t twist_length;
+      typedef geometry_msgs::Twist _twist_type;
+      _twist_type st_twist;
+      _twist_type * twist;
+
+    LinkStates():
+      name_length(0), name(NULL),
+      pose_length(0), pose(NULL),
+      twist_length(0), twist(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->name_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->name_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->name_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->name_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->name_length);
+      for( uint32_t i = 0; i < name_length; i++){
+      uint32_t length_namei = strlen(this->name[i]);
+      varToArr(outbuffer + offset, length_namei);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name[i], length_namei);
+      offset += length_namei;
+      }
+      *(outbuffer + offset + 0) = (this->pose_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->pose_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->pose_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->pose_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->pose_length);
+      for( uint32_t i = 0; i < pose_length; i++){
+      offset += this->pose[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->twist_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->twist_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->twist_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->twist_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->twist_length);
+      for( uint32_t i = 0; i < twist_length; i++){
+      offset += this->twist[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t name_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->name_length);
+      if(name_lengthT > name_length)
+        this->name = (char**)realloc(this->name, name_lengthT * sizeof(char*));
+      name_length = name_lengthT;
+      for( uint32_t i = 0; i < name_length; i++){
+      uint32_t length_st_name;
+      arrToVar(length_st_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_name-1]=0;
+      this->st_name = (char *)(inbuffer + offset-1);
+      offset += length_st_name;
+        memcpy( &(this->name[i]), &(this->st_name), sizeof(char*));
+      }
+      uint32_t pose_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->pose_length);
+      if(pose_lengthT > pose_length)
+        this->pose = (geometry_msgs::Pose*)realloc(this->pose, pose_lengthT * sizeof(geometry_msgs::Pose));
+      pose_length = pose_lengthT;
+      for( uint32_t i = 0; i < pose_length; i++){
+      offset += this->st_pose.deserialize(inbuffer + offset);
+        memcpy( &(this->pose[i]), &(this->st_pose), sizeof(geometry_msgs::Pose));
+      }
+      uint32_t twist_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->twist_length);
+      if(twist_lengthT > twist_length)
+        this->twist = (geometry_msgs::Twist*)realloc(this->twist, twist_lengthT * sizeof(geometry_msgs::Twist));
+      twist_length = twist_lengthT;
+      for( uint32_t i = 0; i < twist_length; i++){
+      offset += this->st_twist.deserialize(inbuffer + offset);
+        memcpy( &(this->twist[i]), &(this->st_twist), sizeof(geometry_msgs::Twist));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "gazebo_msgs/LinkStates"; };
+    const char * getMD5(){ return "48c080191eb15c41858319b4d8a609c2"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/ModelState.h b/otto_controller_source/Inc/gazebo_msgs/ModelState.h
new file mode 100644 (file)
index 0000000..510ae98
--- /dev/null
@@ -0,0 +1,84 @@
+#ifndef _ROS_gazebo_msgs_ModelState_h
+#define _ROS_gazebo_msgs_ModelState_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Pose.h"
+#include "geometry_msgs/Twist.h"
+
+namespace gazebo_msgs
+{
+
+  class ModelState : public ros::Msg
+  {
+    public:
+      typedef const char* _model_name_type;
+      _model_name_type model_name;
+      typedef geometry_msgs::Pose _pose_type;
+      _pose_type pose;
+      typedef geometry_msgs::Twist _twist_type;
+      _twist_type twist;
+      typedef const char* _reference_frame_type;
+      _reference_frame_type reference_frame;
+
+    ModelState():
+      model_name(""),
+      pose(),
+      twist(),
+      reference_frame("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_model_name = strlen(this->model_name);
+      varToArr(outbuffer + offset, length_model_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->model_name, length_model_name);
+      offset += length_model_name;
+      offset += this->pose.serialize(outbuffer + offset);
+      offset += this->twist.serialize(outbuffer + offset);
+      uint32_t length_reference_frame = strlen(this->reference_frame);
+      varToArr(outbuffer + offset, length_reference_frame);
+      offset += 4;
+      memcpy(outbuffer + offset, this->reference_frame, length_reference_frame);
+      offset += length_reference_frame;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_model_name;
+      arrToVar(length_model_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_model_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_model_name-1]=0;
+      this->model_name = (char *)(inbuffer + offset-1);
+      offset += length_model_name;
+      offset += this->pose.deserialize(inbuffer + offset);
+      offset += this->twist.deserialize(inbuffer + offset);
+      uint32_t length_reference_frame;
+      arrToVar(length_reference_frame, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_reference_frame; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_reference_frame-1]=0;
+      this->reference_frame = (char *)(inbuffer + offset-1);
+      offset += length_reference_frame;
+     return offset;
+    }
+
+    const char * getType(){ return "gazebo_msgs/ModelState"; };
+    const char * getMD5(){ return "9330fd35f2fcd82d457e54bd54e10593"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/ModelStates.h b/otto_controller_source/Inc/gazebo_msgs/ModelStates.h
new file mode 100644 (file)
index 0000000..cc0d6b9
--- /dev/null
@@ -0,0 +1,127 @@
+#ifndef _ROS_gazebo_msgs_ModelStates_h
+#define _ROS_gazebo_msgs_ModelStates_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Pose.h"
+#include "geometry_msgs/Twist.h"
+
+namespace gazebo_msgs
+{
+
+  class ModelStates : public ros::Msg
+  {
+    public:
+      uint32_t name_length;
+      typedef char* _name_type;
+      _name_type st_name;
+      _name_type * name;
+      uint32_t pose_length;
+      typedef geometry_msgs::Pose _pose_type;
+      _pose_type st_pose;
+      _pose_type * pose;
+      uint32_t twist_length;
+      typedef geometry_msgs::Twist _twist_type;
+      _twist_type st_twist;
+      _twist_type * twist;
+
+    ModelStates():
+      name_length(0), name(NULL),
+      pose_length(0), pose(NULL),
+      twist_length(0), twist(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->name_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->name_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->name_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->name_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->name_length);
+      for( uint32_t i = 0; i < name_length; i++){
+      uint32_t length_namei = strlen(this->name[i]);
+      varToArr(outbuffer + offset, length_namei);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name[i], length_namei);
+      offset += length_namei;
+      }
+      *(outbuffer + offset + 0) = (this->pose_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->pose_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->pose_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->pose_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->pose_length);
+      for( uint32_t i = 0; i < pose_length; i++){
+      offset += this->pose[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->twist_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->twist_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->twist_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->twist_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->twist_length);
+      for( uint32_t i = 0; i < twist_length; i++){
+      offset += this->twist[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t name_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->name_length);
+      if(name_lengthT > name_length)
+        this->name = (char**)realloc(this->name, name_lengthT * sizeof(char*));
+      name_length = name_lengthT;
+      for( uint32_t i = 0; i < name_length; i++){
+      uint32_t length_st_name;
+      arrToVar(length_st_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_name-1]=0;
+      this->st_name = (char *)(inbuffer + offset-1);
+      offset += length_st_name;
+        memcpy( &(this->name[i]), &(this->st_name), sizeof(char*));
+      }
+      uint32_t pose_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->pose_length);
+      if(pose_lengthT > pose_length)
+        this->pose = (geometry_msgs::Pose*)realloc(this->pose, pose_lengthT * sizeof(geometry_msgs::Pose));
+      pose_length = pose_lengthT;
+      for( uint32_t i = 0; i < pose_length; i++){
+      offset += this->st_pose.deserialize(inbuffer + offset);
+        memcpy( &(this->pose[i]), &(this->st_pose), sizeof(geometry_msgs::Pose));
+      }
+      uint32_t twist_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->twist_length);
+      if(twist_lengthT > twist_length)
+        this->twist = (geometry_msgs::Twist*)realloc(this->twist, twist_lengthT * sizeof(geometry_msgs::Twist));
+      twist_length = twist_lengthT;
+      for( uint32_t i = 0; i < twist_length; i++){
+      offset += this->st_twist.deserialize(inbuffer + offset);
+        memcpy( &(this->twist[i]), &(this->st_twist), sizeof(geometry_msgs::Twist));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "gazebo_msgs/ModelStates"; };
+    const char * getMD5(){ return "48c080191eb15c41858319b4d8a609c2"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/ODEJointProperties.h b/otto_controller_source/Inc/gazebo_msgs/ODEJointProperties.h
new file mode 100644 (file)
index 0000000..3c6c57f
--- /dev/null
@@ -0,0 +1,288 @@
+#ifndef _ROS_gazebo_msgs_ODEJointProperties_h
+#define _ROS_gazebo_msgs_ODEJointProperties_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace gazebo_msgs
+{
+
+  class ODEJointProperties : public ros::Msg
+  {
+    public:
+      uint32_t damping_length;
+      typedef float _damping_type;
+      _damping_type st_damping;
+      _damping_type * damping;
+      uint32_t hiStop_length;
+      typedef float _hiStop_type;
+      _hiStop_type st_hiStop;
+      _hiStop_type * hiStop;
+      uint32_t loStop_length;
+      typedef float _loStop_type;
+      _loStop_type st_loStop;
+      _loStop_type * loStop;
+      uint32_t erp_length;
+      typedef float _erp_type;
+      _erp_type st_erp;
+      _erp_type * erp;
+      uint32_t cfm_length;
+      typedef float _cfm_type;
+      _cfm_type st_cfm;
+      _cfm_type * cfm;
+      uint32_t stop_erp_length;
+      typedef float _stop_erp_type;
+      _stop_erp_type st_stop_erp;
+      _stop_erp_type * stop_erp;
+      uint32_t stop_cfm_length;
+      typedef float _stop_cfm_type;
+      _stop_cfm_type st_stop_cfm;
+      _stop_cfm_type * stop_cfm;
+      uint32_t fudge_factor_length;
+      typedef float _fudge_factor_type;
+      _fudge_factor_type st_fudge_factor;
+      _fudge_factor_type * fudge_factor;
+      uint32_t fmax_length;
+      typedef float _fmax_type;
+      _fmax_type st_fmax;
+      _fmax_type * fmax;
+      uint32_t vel_length;
+      typedef float _vel_type;
+      _vel_type st_vel;
+      _vel_type * vel;
+
+    ODEJointProperties():
+      damping_length(0), damping(NULL),
+      hiStop_length(0), hiStop(NULL),
+      loStop_length(0), loStop(NULL),
+      erp_length(0), erp(NULL),
+      cfm_length(0), cfm(NULL),
+      stop_erp_length(0), stop_erp(NULL),
+      stop_cfm_length(0), stop_cfm(NULL),
+      fudge_factor_length(0), fudge_factor(NULL),
+      fmax_length(0), fmax(NULL),
+      vel_length(0), vel(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->damping_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->damping_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->damping_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->damping_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->damping_length);
+      for( uint32_t i = 0; i < damping_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->damping[i]);
+      }
+      *(outbuffer + offset + 0) = (this->hiStop_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->hiStop_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->hiStop_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->hiStop_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->hiStop_length);
+      for( uint32_t i = 0; i < hiStop_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->hiStop[i]);
+      }
+      *(outbuffer + offset + 0) = (this->loStop_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->loStop_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->loStop_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->loStop_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->loStop_length);
+      for( uint32_t i = 0; i < loStop_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->loStop[i]);
+      }
+      *(outbuffer + offset + 0) = (this->erp_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->erp_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->erp_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->erp_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->erp_length);
+      for( uint32_t i = 0; i < erp_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->erp[i]);
+      }
+      *(outbuffer + offset + 0) = (this->cfm_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->cfm_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->cfm_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->cfm_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->cfm_length);
+      for( uint32_t i = 0; i < cfm_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->cfm[i]);
+      }
+      *(outbuffer + offset + 0) = (this->stop_erp_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stop_erp_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stop_erp_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stop_erp_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stop_erp_length);
+      for( uint32_t i = 0; i < stop_erp_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->stop_erp[i]);
+      }
+      *(outbuffer + offset + 0) = (this->stop_cfm_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stop_cfm_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stop_cfm_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stop_cfm_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stop_cfm_length);
+      for( uint32_t i = 0; i < stop_cfm_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->stop_cfm[i]);
+      }
+      *(outbuffer + offset + 0) = (this->fudge_factor_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->fudge_factor_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->fudge_factor_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->fudge_factor_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->fudge_factor_length);
+      for( uint32_t i = 0; i < fudge_factor_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->fudge_factor[i]);
+      }
+      *(outbuffer + offset + 0) = (this->fmax_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->fmax_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->fmax_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->fmax_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->fmax_length);
+      for( uint32_t i = 0; i < fmax_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->fmax[i]);
+      }
+      *(outbuffer + offset + 0) = (this->vel_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->vel_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->vel_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->vel_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->vel_length);
+      for( uint32_t i = 0; i < vel_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->vel[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t damping_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      damping_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->damping_length);
+      if(damping_lengthT > damping_length)
+        this->damping = (float*)realloc(this->damping, damping_lengthT * sizeof(float));
+      damping_length = damping_lengthT;
+      for( uint32_t i = 0; i < damping_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_damping));
+        memcpy( &(this->damping[i]), &(this->st_damping), sizeof(float));
+      }
+      uint32_t hiStop_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      hiStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      hiStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      hiStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->hiStop_length);
+      if(hiStop_lengthT > hiStop_length)
+        this->hiStop = (float*)realloc(this->hiStop, hiStop_lengthT * sizeof(float));
+      hiStop_length = hiStop_lengthT;
+      for( uint32_t i = 0; i < hiStop_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_hiStop));
+        memcpy( &(this->hiStop[i]), &(this->st_hiStop), sizeof(float));
+      }
+      uint32_t loStop_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      loStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      loStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      loStop_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->loStop_length);
+      if(loStop_lengthT > loStop_length)
+        this->loStop = (float*)realloc(this->loStop, loStop_lengthT * sizeof(float));
+      loStop_length = loStop_lengthT;
+      for( uint32_t i = 0; i < loStop_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_loStop));
+        memcpy( &(this->loStop[i]), &(this->st_loStop), sizeof(float));
+      }
+      uint32_t erp_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->erp_length);
+      if(erp_lengthT > erp_length)
+        this->erp = (float*)realloc(this->erp, erp_lengthT * sizeof(float));
+      erp_length = erp_lengthT;
+      for( uint32_t i = 0; i < erp_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_erp));
+        memcpy( &(this->erp[i]), &(this->st_erp), sizeof(float));
+      }
+      uint32_t cfm_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->cfm_length);
+      if(cfm_lengthT > cfm_length)
+        this->cfm = (float*)realloc(this->cfm, cfm_lengthT * sizeof(float));
+      cfm_length = cfm_lengthT;
+      for( uint32_t i = 0; i < cfm_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_cfm));
+        memcpy( &(this->cfm[i]), &(this->st_cfm), sizeof(float));
+      }
+      uint32_t stop_erp_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      stop_erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      stop_erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      stop_erp_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->stop_erp_length);
+      if(stop_erp_lengthT > stop_erp_length)
+        this->stop_erp = (float*)realloc(this->stop_erp, stop_erp_lengthT * sizeof(float));
+      stop_erp_length = stop_erp_lengthT;
+      for( uint32_t i = 0; i < stop_erp_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_stop_erp));
+        memcpy( &(this->stop_erp[i]), &(this->st_stop_erp), sizeof(float));
+      }
+      uint32_t stop_cfm_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      stop_cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      stop_cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      stop_cfm_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->stop_cfm_length);
+      if(stop_cfm_lengthT > stop_cfm_length)
+        this->stop_cfm = (float*)realloc(this->stop_cfm, stop_cfm_lengthT * sizeof(float));
+      stop_cfm_length = stop_cfm_lengthT;
+      for( uint32_t i = 0; i < stop_cfm_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_stop_cfm));
+        memcpy( &(this->stop_cfm[i]), &(this->st_stop_cfm), sizeof(float));
+      }
+      uint32_t fudge_factor_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      fudge_factor_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      fudge_factor_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      fudge_factor_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->fudge_factor_length);
+      if(fudge_factor_lengthT > fudge_factor_length)
+        this->fudge_factor = (float*)realloc(this->fudge_factor, fudge_factor_lengthT * sizeof(float));
+      fudge_factor_length = fudge_factor_lengthT;
+      for( uint32_t i = 0; i < fudge_factor_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_fudge_factor));
+        memcpy( &(this->fudge_factor[i]), &(this->st_fudge_factor), sizeof(float));
+      }
+      uint32_t fmax_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      fmax_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      fmax_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      fmax_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->fmax_length);
+      if(fmax_lengthT > fmax_length)
+        this->fmax = (float*)realloc(this->fmax, fmax_lengthT * sizeof(float));
+      fmax_length = fmax_lengthT;
+      for( uint32_t i = 0; i < fmax_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_fmax));
+        memcpy( &(this->fmax[i]), &(this->st_fmax), sizeof(float));
+      }
+      uint32_t vel_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      vel_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      vel_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      vel_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->vel_length);
+      if(vel_lengthT > vel_length)
+        this->vel = (float*)realloc(this->vel, vel_lengthT * sizeof(float));
+      vel_length = vel_lengthT;
+      for( uint32_t i = 0; i < vel_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_vel));
+        memcpy( &(this->vel[i]), &(this->st_vel), sizeof(float));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "gazebo_msgs/ODEJointProperties"; };
+    const char * getMD5(){ return "1b744c32a920af979f53afe2f9c3511f"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/ODEPhysics.h b/otto_controller_source/Inc/gazebo_msgs/ODEPhysics.h
new file mode 100644 (file)
index 0000000..54f316e
--- /dev/null
@@ -0,0 +1,125 @@
+#ifndef _ROS_gazebo_msgs_ODEPhysics_h
+#define _ROS_gazebo_msgs_ODEPhysics_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace gazebo_msgs
+{
+
+  class ODEPhysics : public ros::Msg
+  {
+    public:
+      typedef bool _auto_disable_bodies_type;
+      _auto_disable_bodies_type auto_disable_bodies;
+      typedef uint32_t _sor_pgs_precon_iters_type;
+      _sor_pgs_precon_iters_type sor_pgs_precon_iters;
+      typedef uint32_t _sor_pgs_iters_type;
+      _sor_pgs_iters_type sor_pgs_iters;
+      typedef float _sor_pgs_w_type;
+      _sor_pgs_w_type sor_pgs_w;
+      typedef float _sor_pgs_rms_error_tol_type;
+      _sor_pgs_rms_error_tol_type sor_pgs_rms_error_tol;
+      typedef float _contact_surface_layer_type;
+      _contact_surface_layer_type contact_surface_layer;
+      typedef float _contact_max_correcting_vel_type;
+      _contact_max_correcting_vel_type contact_max_correcting_vel;
+      typedef float _cfm_type;
+      _cfm_type cfm;
+      typedef float _erp_type;
+      _erp_type erp;
+      typedef uint32_t _max_contacts_type;
+      _max_contacts_type max_contacts;
+
+    ODEPhysics():
+      auto_disable_bodies(0),
+      sor_pgs_precon_iters(0),
+      sor_pgs_iters(0),
+      sor_pgs_w(0),
+      sor_pgs_rms_error_tol(0),
+      contact_surface_layer(0),
+      contact_max_correcting_vel(0),
+      cfm(0),
+      erp(0),
+      max_contacts(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_auto_disable_bodies;
+      u_auto_disable_bodies.real = this->auto_disable_bodies;
+      *(outbuffer + offset + 0) = (u_auto_disable_bodies.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->auto_disable_bodies);
+      *(outbuffer + offset + 0) = (this->sor_pgs_precon_iters >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->sor_pgs_precon_iters >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->sor_pgs_precon_iters >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->sor_pgs_precon_iters >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->sor_pgs_precon_iters);
+      *(outbuffer + offset + 0) = (this->sor_pgs_iters >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->sor_pgs_iters >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->sor_pgs_iters >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->sor_pgs_iters >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->sor_pgs_iters);
+      offset += serializeAvrFloat64(outbuffer + offset, this->sor_pgs_w);
+      offset += serializeAvrFloat64(outbuffer + offset, this->sor_pgs_rms_error_tol);
+      offset += serializeAvrFloat64(outbuffer + offset, this->contact_surface_layer);
+      offset += serializeAvrFloat64(outbuffer + offset, this->contact_max_correcting_vel);
+      offset += serializeAvrFloat64(outbuffer + offset, this->cfm);
+      offset += serializeAvrFloat64(outbuffer + offset, this->erp);
+      *(outbuffer + offset + 0) = (this->max_contacts >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->max_contacts >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->max_contacts >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->max_contacts >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->max_contacts);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_auto_disable_bodies;
+      u_auto_disable_bodies.base = 0;
+      u_auto_disable_bodies.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->auto_disable_bodies = u_auto_disable_bodies.real;
+      offset += sizeof(this->auto_disable_bodies);
+      this->sor_pgs_precon_iters =  ((uint32_t) (*(inbuffer + offset)));
+      this->sor_pgs_precon_iters |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->sor_pgs_precon_iters |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->sor_pgs_precon_iters |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->sor_pgs_precon_iters);
+      this->sor_pgs_iters =  ((uint32_t) (*(inbuffer + offset)));
+      this->sor_pgs_iters |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->sor_pgs_iters |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->sor_pgs_iters |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->sor_pgs_iters);
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->sor_pgs_w));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->sor_pgs_rms_error_tol));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->contact_surface_layer));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->contact_max_correcting_vel));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->cfm));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->erp));
+      this->max_contacts =  ((uint32_t) (*(inbuffer + offset)));
+      this->max_contacts |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->max_contacts |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->max_contacts |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->max_contacts);
+     return offset;
+    }
+
+    const char * getType(){ return "gazebo_msgs/ODEPhysics"; };
+    const char * getMD5(){ return "667d56ddbd547918c32d1934503dc335"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/SetJointProperties.h b/otto_controller_source/Inc/gazebo_msgs/SetJointProperties.h
new file mode 100644 (file)
index 0000000..981853d
--- /dev/null
@@ -0,0 +1,128 @@
+#ifndef _ROS_SERVICE_SetJointProperties_h
+#define _ROS_SERVICE_SetJointProperties_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "gazebo_msgs/ODEJointProperties.h"
+
+namespace gazebo_msgs
+{
+
+static const char SETJOINTPROPERTIES[] = "gazebo_msgs/SetJointProperties";
+
+  class SetJointPropertiesRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _joint_name_type;
+      _joint_name_type joint_name;
+      typedef gazebo_msgs::ODEJointProperties _ode_joint_config_type;
+      _ode_joint_config_type ode_joint_config;
+
+    SetJointPropertiesRequest():
+      joint_name(""),
+      ode_joint_config()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_joint_name = strlen(this->joint_name);
+      varToArr(outbuffer + offset, length_joint_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->joint_name, length_joint_name);
+      offset += length_joint_name;
+      offset += this->ode_joint_config.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_joint_name;
+      arrToVar(length_joint_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_joint_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_joint_name-1]=0;
+      this->joint_name = (char *)(inbuffer + offset-1);
+      offset += length_joint_name;
+      offset += this->ode_joint_config.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return SETJOINTPROPERTIES; };
+    const char * getMD5(){ return "331fd8f35fd27e3c1421175590258e26"; };
+
+  };
+
+  class SetJointPropertiesResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    SetJointPropertiesResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return SETJOINTPROPERTIES; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class SetJointProperties {
+    public:
+    typedef SetJointPropertiesRequest Request;
+    typedef SetJointPropertiesResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/SetJointTrajectory.h b/otto_controller_source/Inc/gazebo_msgs/SetJointTrajectory.h
new file mode 100644 (file)
index 0000000..81146ce
--- /dev/null
@@ -0,0 +1,170 @@
+#ifndef _ROS_SERVICE_SetJointTrajectory_h
+#define _ROS_SERVICE_SetJointTrajectory_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "trajectory_msgs/JointTrajectory.h"
+#include "geometry_msgs/Pose.h"
+
+namespace gazebo_msgs
+{
+
+static const char SETJOINTTRAJECTORY[] = "gazebo_msgs/SetJointTrajectory";
+
+  class SetJointTrajectoryRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _model_name_type;
+      _model_name_type model_name;
+      typedef trajectory_msgs::JointTrajectory _joint_trajectory_type;
+      _joint_trajectory_type joint_trajectory;
+      typedef geometry_msgs::Pose _model_pose_type;
+      _model_pose_type model_pose;
+      typedef bool _set_model_pose_type;
+      _set_model_pose_type set_model_pose;
+      typedef bool _disable_physics_updates_type;
+      _disable_physics_updates_type disable_physics_updates;
+
+    SetJointTrajectoryRequest():
+      model_name(""),
+      joint_trajectory(),
+      model_pose(),
+      set_model_pose(0),
+      disable_physics_updates(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_model_name = strlen(this->model_name);
+      varToArr(outbuffer + offset, length_model_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->model_name, length_model_name);
+      offset += length_model_name;
+      offset += this->joint_trajectory.serialize(outbuffer + offset);
+      offset += this->model_pose.serialize(outbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_set_model_pose;
+      u_set_model_pose.real = this->set_model_pose;
+      *(outbuffer + offset + 0) = (u_set_model_pose.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->set_model_pose);
+      union {
+        bool real;
+        uint8_t base;
+      } u_disable_physics_updates;
+      u_disable_physics_updates.real = this->disable_physics_updates;
+      *(outbuffer + offset + 0) = (u_disable_physics_updates.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->disable_physics_updates);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_model_name;
+      arrToVar(length_model_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_model_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_model_name-1]=0;
+      this->model_name = (char *)(inbuffer + offset-1);
+      offset += length_model_name;
+      offset += this->joint_trajectory.deserialize(inbuffer + offset);
+      offset += this->model_pose.deserialize(inbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_set_model_pose;
+      u_set_model_pose.base = 0;
+      u_set_model_pose.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->set_model_pose = u_set_model_pose.real;
+      offset += sizeof(this->set_model_pose);
+      union {
+        bool real;
+        uint8_t base;
+      } u_disable_physics_updates;
+      u_disable_physics_updates.base = 0;
+      u_disable_physics_updates.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->disable_physics_updates = u_disable_physics_updates.real;
+      offset += sizeof(this->disable_physics_updates);
+     return offset;
+    }
+
+    const char * getType(){ return SETJOINTTRAJECTORY; };
+    const char * getMD5(){ return "649dd2eba5ffd358069238825f9f85ab"; };
+
+  };
+
+  class SetJointTrajectoryResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    SetJointTrajectoryResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return SETJOINTTRAJECTORY; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class SetJointTrajectory {
+    public:
+    typedef SetJointTrajectoryRequest Request;
+    typedef SetJointTrajectoryResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/SetLightProperties.h b/otto_controller_source/Inc/gazebo_msgs/SetLightProperties.h
new file mode 100644 (file)
index 0000000..9f7d0d3
--- /dev/null
@@ -0,0 +1,143 @@
+#ifndef _ROS_SERVICE_SetLightProperties_h
+#define _ROS_SERVICE_SetLightProperties_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/ColorRGBA.h"
+
+namespace gazebo_msgs
+{
+
+static const char SETLIGHTPROPERTIES[] = "gazebo_msgs/SetLightProperties";
+
+  class SetLightPropertiesRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _light_name_type;
+      _light_name_type light_name;
+      typedef std_msgs::ColorRGBA _diffuse_type;
+      _diffuse_type diffuse;
+      typedef float _attenuation_constant_type;
+      _attenuation_constant_type attenuation_constant;
+      typedef float _attenuation_linear_type;
+      _attenuation_linear_type attenuation_linear;
+      typedef float _attenuation_quadratic_type;
+      _attenuation_quadratic_type attenuation_quadratic;
+
+    SetLightPropertiesRequest():
+      light_name(""),
+      diffuse(),
+      attenuation_constant(0),
+      attenuation_linear(0),
+      attenuation_quadratic(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_light_name = strlen(this->light_name);
+      varToArr(outbuffer + offset, length_light_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->light_name, length_light_name);
+      offset += length_light_name;
+      offset += this->diffuse.serialize(outbuffer + offset);
+      offset += serializeAvrFloat64(outbuffer + offset, this->attenuation_constant);
+      offset += serializeAvrFloat64(outbuffer + offset, this->attenuation_linear);
+      offset += serializeAvrFloat64(outbuffer + offset, this->attenuation_quadratic);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_light_name;
+      arrToVar(length_light_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_light_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_light_name-1]=0;
+      this->light_name = (char *)(inbuffer + offset-1);
+      offset += length_light_name;
+      offset += this->diffuse.deserialize(inbuffer + offset);
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->attenuation_constant));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->attenuation_linear));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->attenuation_quadratic));
+     return offset;
+    }
+
+    const char * getType(){ return SETLIGHTPROPERTIES; };
+    const char * getMD5(){ return "73ad1ac5e9e312ddf7c74f38ad843f34"; };
+
+  };
+
+  class SetLightPropertiesResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    SetLightPropertiesResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return SETLIGHTPROPERTIES; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class SetLightProperties {
+    public:
+    typedef SetLightPropertiesRequest Request;
+    typedef SetLightPropertiesResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/SetLinkProperties.h b/otto_controller_source/Inc/gazebo_msgs/SetLinkProperties.h
new file mode 100644 (file)
index 0000000..5747d26
--- /dev/null
@@ -0,0 +1,181 @@
+#ifndef _ROS_SERVICE_SetLinkProperties_h
+#define _ROS_SERVICE_SetLinkProperties_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Pose.h"
+
+namespace gazebo_msgs
+{
+
+static const char SETLINKPROPERTIES[] = "gazebo_msgs/SetLinkProperties";
+
+  class SetLinkPropertiesRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _link_name_type;
+      _link_name_type link_name;
+      typedef geometry_msgs::Pose _com_type;
+      _com_type com;
+      typedef bool _gravity_mode_type;
+      _gravity_mode_type gravity_mode;
+      typedef float _mass_type;
+      _mass_type mass;
+      typedef float _ixx_type;
+      _ixx_type ixx;
+      typedef float _ixy_type;
+      _ixy_type ixy;
+      typedef float _ixz_type;
+      _ixz_type ixz;
+      typedef float _iyy_type;
+      _iyy_type iyy;
+      typedef float _iyz_type;
+      _iyz_type iyz;
+      typedef float _izz_type;
+      _izz_type izz;
+
+    SetLinkPropertiesRequest():
+      link_name(""),
+      com(),
+      gravity_mode(0),
+      mass(0),
+      ixx(0),
+      ixy(0),
+      ixz(0),
+      iyy(0),
+      iyz(0),
+      izz(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_link_name = strlen(this->link_name);
+      varToArr(outbuffer + offset, length_link_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->link_name, length_link_name);
+      offset += length_link_name;
+      offset += this->com.serialize(outbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_gravity_mode;
+      u_gravity_mode.real = this->gravity_mode;
+      *(outbuffer + offset + 0) = (u_gravity_mode.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->gravity_mode);
+      offset += serializeAvrFloat64(outbuffer + offset, this->mass);
+      offset += serializeAvrFloat64(outbuffer + offset, this->ixx);
+      offset += serializeAvrFloat64(outbuffer + offset, this->ixy);
+      offset += serializeAvrFloat64(outbuffer + offset, this->ixz);
+      offset += serializeAvrFloat64(outbuffer + offset, this->iyy);
+      offset += serializeAvrFloat64(outbuffer + offset, this->iyz);
+      offset += serializeAvrFloat64(outbuffer + offset, this->izz);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_link_name;
+      arrToVar(length_link_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_link_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_link_name-1]=0;
+      this->link_name = (char *)(inbuffer + offset-1);
+      offset += length_link_name;
+      offset += this->com.deserialize(inbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_gravity_mode;
+      u_gravity_mode.base = 0;
+      u_gravity_mode.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->gravity_mode = u_gravity_mode.real;
+      offset += sizeof(this->gravity_mode);
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->mass));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->ixx));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->ixy));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->ixz));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->iyy));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->iyz));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->izz));
+     return offset;
+    }
+
+    const char * getType(){ return SETLINKPROPERTIES; };
+    const char * getMD5(){ return "68ac74a4be01b165bc305b5ccdc45e91"; };
+
+  };
+
+  class SetLinkPropertiesResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    SetLinkPropertiesResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return SETLINKPROPERTIES; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class SetLinkProperties {
+    public:
+    typedef SetLinkPropertiesRequest Request;
+    typedef SetLinkPropertiesResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/SetLinkState.h b/otto_controller_source/Inc/gazebo_msgs/SetLinkState.h
new file mode 100644 (file)
index 0000000..f089492
--- /dev/null
@@ -0,0 +1,111 @@
+#ifndef _ROS_SERVICE_SetLinkState_h
+#define _ROS_SERVICE_SetLinkState_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "gazebo_msgs/LinkState.h"
+
+namespace gazebo_msgs
+{
+
+static const char SETLINKSTATE[] = "gazebo_msgs/SetLinkState";
+
+  class SetLinkStateRequest : public ros::Msg
+  {
+    public:
+      typedef gazebo_msgs::LinkState _link_state_type;
+      _link_state_type link_state;
+
+    SetLinkStateRequest():
+      link_state()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->link_state.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->link_state.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return SETLINKSTATE; };
+    const char * getMD5(){ return "22a2c757d56911b6f27868159e9a872d"; };
+
+  };
+
+  class SetLinkStateResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    SetLinkStateResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return SETLINKSTATE; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class SetLinkState {
+    public:
+    typedef SetLinkStateRequest Request;
+    typedef SetLinkStateResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/SetModelConfiguration.h b/otto_controller_source/Inc/gazebo_msgs/SetModelConfiguration.h
new file mode 100644 (file)
index 0000000..80ef137
--- /dev/null
@@ -0,0 +1,201 @@
+#ifndef _ROS_SERVICE_SetModelConfiguration_h
+#define _ROS_SERVICE_SetModelConfiguration_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace gazebo_msgs
+{
+
+static const char SETMODELCONFIGURATION[] = "gazebo_msgs/SetModelConfiguration";
+
+  class SetModelConfigurationRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _model_name_type;
+      _model_name_type model_name;
+      typedef const char* _urdf_param_name_type;
+      _urdf_param_name_type urdf_param_name;
+      uint32_t joint_names_length;
+      typedef char* _joint_names_type;
+      _joint_names_type st_joint_names;
+      _joint_names_type * joint_names;
+      uint32_t joint_positions_length;
+      typedef float _joint_positions_type;
+      _joint_positions_type st_joint_positions;
+      _joint_positions_type * joint_positions;
+
+    SetModelConfigurationRequest():
+      model_name(""),
+      urdf_param_name(""),
+      joint_names_length(0), joint_names(NULL),
+      joint_positions_length(0), joint_positions(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_model_name = strlen(this->model_name);
+      varToArr(outbuffer + offset, length_model_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->model_name, length_model_name);
+      offset += length_model_name;
+      uint32_t length_urdf_param_name = strlen(this->urdf_param_name);
+      varToArr(outbuffer + offset, length_urdf_param_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->urdf_param_name, length_urdf_param_name);
+      offset += length_urdf_param_name;
+      *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->joint_names_length);
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_joint_namesi = strlen(this->joint_names[i]);
+      varToArr(outbuffer + offset, length_joint_namesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi);
+      offset += length_joint_namesi;
+      }
+      *(outbuffer + offset + 0) = (this->joint_positions_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->joint_positions_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->joint_positions_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->joint_positions_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->joint_positions_length);
+      for( uint32_t i = 0; i < joint_positions_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->joint_positions[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_model_name;
+      arrToVar(length_model_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_model_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_model_name-1]=0;
+      this->model_name = (char *)(inbuffer + offset-1);
+      offset += length_model_name;
+      uint32_t length_urdf_param_name;
+      arrToVar(length_urdf_param_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_urdf_param_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_urdf_param_name-1]=0;
+      this->urdf_param_name = (char *)(inbuffer + offset-1);
+      offset += length_urdf_param_name;
+      uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->joint_names_length);
+      if(joint_names_lengthT > joint_names_length)
+        this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*));
+      joint_names_length = joint_names_lengthT;
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_st_joint_names;
+      arrToVar(length_st_joint_names, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_joint_names-1]=0;
+      this->st_joint_names = (char *)(inbuffer + offset-1);
+      offset += length_st_joint_names;
+        memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*));
+      }
+      uint32_t joint_positions_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      joint_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      joint_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      joint_positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->joint_positions_length);
+      if(joint_positions_lengthT > joint_positions_length)
+        this->joint_positions = (float*)realloc(this->joint_positions, joint_positions_lengthT * sizeof(float));
+      joint_positions_length = joint_positions_lengthT;
+      for( uint32_t i = 0; i < joint_positions_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_joint_positions));
+        memcpy( &(this->joint_positions[i]), &(this->st_joint_positions), sizeof(float));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return SETMODELCONFIGURATION; };
+    const char * getMD5(){ return "160eae60f51fabff255480c70afa289f"; };
+
+  };
+
+  class SetModelConfigurationResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    SetModelConfigurationResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return SETMODELCONFIGURATION; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class SetModelConfiguration {
+    public:
+    typedef SetModelConfigurationRequest Request;
+    typedef SetModelConfigurationResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/SetModelState.h b/otto_controller_source/Inc/gazebo_msgs/SetModelState.h
new file mode 100644 (file)
index 0000000..ef251ad
--- /dev/null
@@ -0,0 +1,111 @@
+#ifndef _ROS_SERVICE_SetModelState_h
+#define _ROS_SERVICE_SetModelState_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "gazebo_msgs/ModelState.h"
+
+namespace gazebo_msgs
+{
+
+static const char SETMODELSTATE[] = "gazebo_msgs/SetModelState";
+
+  class SetModelStateRequest : public ros::Msg
+  {
+    public:
+      typedef gazebo_msgs::ModelState _model_state_type;
+      _model_state_type model_state;
+
+    SetModelStateRequest():
+      model_state()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->model_state.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->model_state.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return SETMODELSTATE; };
+    const char * getMD5(){ return "cb042b0e91880f4661b29ea5b6234350"; };
+
+  };
+
+  class SetModelStateResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    SetModelStateResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return SETMODELSTATE; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class SetModelState {
+    public:
+    typedef SetModelStateRequest Request;
+    typedef SetModelStateResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/SetPhysicsProperties.h b/otto_controller_source/Inc/gazebo_msgs/SetPhysicsProperties.h
new file mode 100644 (file)
index 0000000..2fde5c1
--- /dev/null
@@ -0,0 +1,127 @@
+#ifndef _ROS_SERVICE_SetPhysicsProperties_h
+#define _ROS_SERVICE_SetPhysicsProperties_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Vector3.h"
+#include "gazebo_msgs/ODEPhysics.h"
+
+namespace gazebo_msgs
+{
+
+static const char SETPHYSICSPROPERTIES[] = "gazebo_msgs/SetPhysicsProperties";
+
+  class SetPhysicsPropertiesRequest : public ros::Msg
+  {
+    public:
+      typedef float _time_step_type;
+      _time_step_type time_step;
+      typedef float _max_update_rate_type;
+      _max_update_rate_type max_update_rate;
+      typedef geometry_msgs::Vector3 _gravity_type;
+      _gravity_type gravity;
+      typedef gazebo_msgs::ODEPhysics _ode_config_type;
+      _ode_config_type ode_config;
+
+    SetPhysicsPropertiesRequest():
+      time_step(0),
+      max_update_rate(0),
+      gravity(),
+      ode_config()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += serializeAvrFloat64(outbuffer + offset, this->time_step);
+      offset += serializeAvrFloat64(outbuffer + offset, this->max_update_rate);
+      offset += this->gravity.serialize(outbuffer + offset);
+      offset += this->ode_config.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->time_step));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->max_update_rate));
+      offset += this->gravity.deserialize(inbuffer + offset);
+      offset += this->ode_config.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return SETPHYSICSPROPERTIES; };
+    const char * getMD5(){ return "abd9f82732b52b92e9d6bb36e6a82452"; };
+
+  };
+
+  class SetPhysicsPropertiesResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    SetPhysicsPropertiesResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return SETPHYSICSPROPERTIES; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class SetPhysicsProperties {
+    public:
+    typedef SetPhysicsPropertiesRequest Request;
+    typedef SetPhysicsPropertiesResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/SpawnModel.h b/otto_controller_source/Inc/gazebo_msgs/SpawnModel.h
new file mode 100644 (file)
index 0000000..215b001
--- /dev/null
@@ -0,0 +1,179 @@
+#ifndef _ROS_SERVICE_SpawnModel_h
+#define _ROS_SERVICE_SpawnModel_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Pose.h"
+
+namespace gazebo_msgs
+{
+
+static const char SPAWNMODEL[] = "gazebo_msgs/SpawnModel";
+
+  class SpawnModelRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _model_name_type;
+      _model_name_type model_name;
+      typedef const char* _model_xml_type;
+      _model_xml_type model_xml;
+      typedef const char* _robot_namespace_type;
+      _robot_namespace_type robot_namespace;
+      typedef geometry_msgs::Pose _initial_pose_type;
+      _initial_pose_type initial_pose;
+      typedef const char* _reference_frame_type;
+      _reference_frame_type reference_frame;
+
+    SpawnModelRequest():
+      model_name(""),
+      model_xml(""),
+      robot_namespace(""),
+      initial_pose(),
+      reference_frame("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_model_name = strlen(this->model_name);
+      varToArr(outbuffer + offset, length_model_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->model_name, length_model_name);
+      offset += length_model_name;
+      uint32_t length_model_xml = strlen(this->model_xml);
+      varToArr(outbuffer + offset, length_model_xml);
+      offset += 4;
+      memcpy(outbuffer + offset, this->model_xml, length_model_xml);
+      offset += length_model_xml;
+      uint32_t length_robot_namespace = strlen(this->robot_namespace);
+      varToArr(outbuffer + offset, length_robot_namespace);
+      offset += 4;
+      memcpy(outbuffer + offset, this->robot_namespace, length_robot_namespace);
+      offset += length_robot_namespace;
+      offset += this->initial_pose.serialize(outbuffer + offset);
+      uint32_t length_reference_frame = strlen(this->reference_frame);
+      varToArr(outbuffer + offset, length_reference_frame);
+      offset += 4;
+      memcpy(outbuffer + offset, this->reference_frame, length_reference_frame);
+      offset += length_reference_frame;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_model_name;
+      arrToVar(length_model_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_model_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_model_name-1]=0;
+      this->model_name = (char *)(inbuffer + offset-1);
+      offset += length_model_name;
+      uint32_t length_model_xml;
+      arrToVar(length_model_xml, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_model_xml; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_model_xml-1]=0;
+      this->model_xml = (char *)(inbuffer + offset-1);
+      offset += length_model_xml;
+      uint32_t length_robot_namespace;
+      arrToVar(length_robot_namespace, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_robot_namespace; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_robot_namespace-1]=0;
+      this->robot_namespace = (char *)(inbuffer + offset-1);
+      offset += length_robot_namespace;
+      offset += this->initial_pose.deserialize(inbuffer + offset);
+      uint32_t length_reference_frame;
+      arrToVar(length_reference_frame, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_reference_frame; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_reference_frame-1]=0;
+      this->reference_frame = (char *)(inbuffer + offset-1);
+      offset += length_reference_frame;
+     return offset;
+    }
+
+    const char * getType(){ return SPAWNMODEL; };
+    const char * getMD5(){ return "6d0eba5753761cd57e6263a056b79930"; };
+
+  };
+
+  class SpawnModelResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    SpawnModelResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return SPAWNMODEL; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class SpawnModel {
+    public:
+    typedef SpawnModelRequest Request;
+    typedef SpawnModelResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/gazebo_msgs/WorldState.h b/otto_controller_source/Inc/gazebo_msgs/WorldState.h
new file mode 100644 (file)
index 0000000..bbfaa41
--- /dev/null
@@ -0,0 +1,159 @@
+#ifndef _ROS_gazebo_msgs_WorldState_h
+#define _ROS_gazebo_msgs_WorldState_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Pose.h"
+#include "geometry_msgs/Twist.h"
+#include "geometry_msgs/Wrench.h"
+
+namespace gazebo_msgs
+{
+
+  class WorldState : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t name_length;
+      typedef char* _name_type;
+      _name_type st_name;
+      _name_type * name;
+      uint32_t pose_length;
+      typedef geometry_msgs::Pose _pose_type;
+      _pose_type st_pose;
+      _pose_type * pose;
+      uint32_t twist_length;
+      typedef geometry_msgs::Twist _twist_type;
+      _twist_type st_twist;
+      _twist_type * twist;
+      uint32_t wrench_length;
+      typedef geometry_msgs::Wrench _wrench_type;
+      _wrench_type st_wrench;
+      _wrench_type * wrench;
+
+    WorldState():
+      header(),
+      name_length(0), name(NULL),
+      pose_length(0), pose(NULL),
+      twist_length(0), twist(NULL),
+      wrench_length(0), wrench(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->name_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->name_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->name_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->name_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->name_length);
+      for( uint32_t i = 0; i < name_length; i++){
+      uint32_t length_namei = strlen(this->name[i]);
+      varToArr(outbuffer + offset, length_namei);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name[i], length_namei);
+      offset += length_namei;
+      }
+      *(outbuffer + offset + 0) = (this->pose_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->pose_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->pose_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->pose_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->pose_length);
+      for( uint32_t i = 0; i < pose_length; i++){
+      offset += this->pose[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->twist_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->twist_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->twist_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->twist_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->twist_length);
+      for( uint32_t i = 0; i < twist_length; i++){
+      offset += this->twist[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->wrench_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->wrench_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->wrench_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->wrench_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->wrench_length);
+      for( uint32_t i = 0; i < wrench_length; i++){
+      offset += this->wrench[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t name_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->name_length);
+      if(name_lengthT > name_length)
+        this->name = (char**)realloc(this->name, name_lengthT * sizeof(char*));
+      name_length = name_lengthT;
+      for( uint32_t i = 0; i < name_length; i++){
+      uint32_t length_st_name;
+      arrToVar(length_st_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_name-1]=0;
+      this->st_name = (char *)(inbuffer + offset-1);
+      offset += length_st_name;
+        memcpy( &(this->name[i]), &(this->st_name), sizeof(char*));
+      }
+      uint32_t pose_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      pose_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->pose_length);
+      if(pose_lengthT > pose_length)
+        this->pose = (geometry_msgs::Pose*)realloc(this->pose, pose_lengthT * sizeof(geometry_msgs::Pose));
+      pose_length = pose_lengthT;
+      for( uint32_t i = 0; i < pose_length; i++){
+      offset += this->st_pose.deserialize(inbuffer + offset);
+        memcpy( &(this->pose[i]), &(this->st_pose), sizeof(geometry_msgs::Pose));
+      }
+      uint32_t twist_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->twist_length);
+      if(twist_lengthT > twist_length)
+        this->twist = (geometry_msgs::Twist*)realloc(this->twist, twist_lengthT * sizeof(geometry_msgs::Twist));
+      twist_length = twist_lengthT;
+      for( uint32_t i = 0; i < twist_length; i++){
+      offset += this->st_twist.deserialize(inbuffer + offset);
+        memcpy( &(this->twist[i]), &(this->st_twist), sizeof(geometry_msgs::Twist));
+      }
+      uint32_t wrench_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->wrench_length);
+      if(wrench_lengthT > wrench_length)
+        this->wrench = (geometry_msgs::Wrench*)realloc(this->wrench, wrench_lengthT * sizeof(geometry_msgs::Wrench));
+      wrench_length = wrench_lengthT;
+      for( uint32_t i = 0; i < wrench_length; i++){
+      offset += this->st_wrench.deserialize(inbuffer + offset);
+        memcpy( &(this->wrench[i]), &(this->st_wrench), sizeof(geometry_msgs::Wrench));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "gazebo_msgs/WorldState"; };
+    const char * getMD5(){ return "de1a9de3ab7ba97ac0e9ec01a4eb481e"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/Accel.h b/otto_controller_source/Inc/geometry_msgs/Accel.h
new file mode 100644 (file)
index 0000000..d7250a1
--- /dev/null
@@ -0,0 +1,49 @@
+#ifndef _ROS_geometry_msgs_Accel_h
+#define _ROS_geometry_msgs_Accel_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Vector3.h"
+
+namespace geometry_msgs
+{
+
+  class Accel : public ros::Msg
+  {
+    public:
+      typedef geometry_msgs::Vector3 _linear_type;
+      _linear_type linear;
+      typedef geometry_msgs::Vector3 _angular_type;
+      _angular_type angular;
+
+    Accel():
+      linear(),
+      angular()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->linear.serialize(outbuffer + offset);
+      offset += this->angular.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->linear.deserialize(inbuffer + offset);
+      offset += this->angular.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/Accel"; };
+    const char * getMD5(){ return "9f195f881246fdfa2798d1d3eebca84a"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/AccelStamped.h b/otto_controller_source/Inc/geometry_msgs/AccelStamped.h
new file mode 100644 (file)
index 0000000..66b8e23
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_AccelStamped_h
+#define _ROS_geometry_msgs_AccelStamped_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Accel.h"
+
+namespace geometry_msgs
+{
+
+  class AccelStamped : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Accel _accel_type;
+      _accel_type accel;
+
+    AccelStamped():
+      header(),
+      accel()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->accel.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->accel.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/AccelStamped"; };
+    const char * getMD5(){ return "d8a98a5d81351b6eb0578c78557e7659"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/AccelWithCovariance.h b/otto_controller_source/Inc/geometry_msgs/AccelWithCovariance.h
new file mode 100644 (file)
index 0000000..5cc717f
--- /dev/null
@@ -0,0 +1,52 @@
+#ifndef _ROS_geometry_msgs_AccelWithCovariance_h
+#define _ROS_geometry_msgs_AccelWithCovariance_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Accel.h"
+
+namespace geometry_msgs
+{
+
+  class AccelWithCovariance : public ros::Msg
+  {
+    public:
+      typedef geometry_msgs::Accel _accel_type;
+      _accel_type accel;
+      float covariance[36];
+
+    AccelWithCovariance():
+      accel(),
+      covariance()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->accel.serialize(outbuffer + offset);
+      for( uint32_t i = 0; i < 36; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->covariance[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->accel.deserialize(inbuffer + offset);
+      for( uint32_t i = 0; i < 36; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->covariance[i]));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/AccelWithCovariance"; };
+    const char * getMD5(){ return "ad5a718d699c6be72a02b8d6a139f334"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/AccelWithCovarianceStamped.h b/otto_controller_source/Inc/geometry_msgs/AccelWithCovarianceStamped.h
new file mode 100644 (file)
index 0000000..b5d6608
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_AccelWithCovarianceStamped_h
+#define _ROS_geometry_msgs_AccelWithCovarianceStamped_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/AccelWithCovariance.h"
+
+namespace geometry_msgs
+{
+
+  class AccelWithCovarianceStamped : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::AccelWithCovariance _accel_type;
+      _accel_type accel;
+
+    AccelWithCovarianceStamped():
+      header(),
+      accel()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->accel.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->accel.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/AccelWithCovarianceStamped"; };
+    const char * getMD5(){ return "96adb295225031ec8d57fb4251b0a886"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/Inertia.h b/otto_controller_source/Inc/geometry_msgs/Inertia.h
new file mode 100644 (file)
index 0000000..7fb6f00
--- /dev/null
@@ -0,0 +1,79 @@
+#ifndef _ROS_geometry_msgs_Inertia_h
+#define _ROS_geometry_msgs_Inertia_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Vector3.h"
+
+namespace geometry_msgs
+{
+
+  class Inertia : public ros::Msg
+  {
+    public:
+      typedef float _m_type;
+      _m_type m;
+      typedef geometry_msgs::Vector3 _com_type;
+      _com_type com;
+      typedef float _ixx_type;
+      _ixx_type ixx;
+      typedef float _ixy_type;
+      _ixy_type ixy;
+      typedef float _ixz_type;
+      _ixz_type ixz;
+      typedef float _iyy_type;
+      _iyy_type iyy;
+      typedef float _iyz_type;
+      _iyz_type iyz;
+      typedef float _izz_type;
+      _izz_type izz;
+
+    Inertia():
+      m(0),
+      com(),
+      ixx(0),
+      ixy(0),
+      ixz(0),
+      iyy(0),
+      iyz(0),
+      izz(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += serializeAvrFloat64(outbuffer + offset, this->m);
+      offset += this->com.serialize(outbuffer + offset);
+      offset += serializeAvrFloat64(outbuffer + offset, this->ixx);
+      offset += serializeAvrFloat64(outbuffer + offset, this->ixy);
+      offset += serializeAvrFloat64(outbuffer + offset, this->ixz);
+      offset += serializeAvrFloat64(outbuffer + offset, this->iyy);
+      offset += serializeAvrFloat64(outbuffer + offset, this->iyz);
+      offset += serializeAvrFloat64(outbuffer + offset, this->izz);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->m));
+      offset += this->com.deserialize(inbuffer + offset);
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->ixx));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->ixy));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->ixz));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->iyy));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->iyz));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->izz));
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/Inertia"; };
+    const char * getMD5(){ return "1d26e4bb6c83ff141c5cf0d883c2b0fe"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/InertiaStamped.h b/otto_controller_source/Inc/geometry_msgs/InertiaStamped.h
new file mode 100644 (file)
index 0000000..1ddae56
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_InertiaStamped_h
+#define _ROS_geometry_msgs_InertiaStamped_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Inertia.h"
+
+namespace geometry_msgs
+{
+
+  class InertiaStamped : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Inertia _inertia_type;
+      _inertia_type inertia;
+
+    InertiaStamped():
+      header(),
+      inertia()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->inertia.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->inertia.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/InertiaStamped"; };
+    const char * getMD5(){ return "ddee48caeab5a966c5e8d166654a9ac7"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/Point.h b/otto_controller_source/Inc/geometry_msgs/Point.h
new file mode 100644 (file)
index 0000000..87e1d66
--- /dev/null
@@ -0,0 +1,53 @@
+#ifndef _ROS_geometry_msgs_Point_h
+#define _ROS_geometry_msgs_Point_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace geometry_msgs
+{
+
+  class Point : public ros::Msg
+  {
+    public:
+      typedef float _x_type;
+      _x_type x;
+      typedef float _y_type;
+      _y_type y;
+      typedef float _z_type;
+      _z_type z;
+
+    Point():
+      x(0),
+      y(0),
+      z(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += serializeAvrFloat64(outbuffer + offset, this->x);
+      offset += serializeAvrFloat64(outbuffer + offset, this->y);
+      offset += serializeAvrFloat64(outbuffer + offset, this->z);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->x));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->y));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->z));
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/Point"; };
+    const char * getMD5(){ return "4a842b65f413084dc2b10fb484ea7f17"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/Point32.h b/otto_controller_source/Inc/geometry_msgs/Point32.h
new file mode 100644 (file)
index 0000000..603d9f4
--- /dev/null
@@ -0,0 +1,110 @@
+#ifndef _ROS_geometry_msgs_Point32_h
+#define _ROS_geometry_msgs_Point32_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace geometry_msgs
+{
+
+  class Point32 : public ros::Msg
+  {
+    public:
+      typedef float _x_type;
+      _x_type x;
+      typedef float _y_type;
+      _y_type y;
+      typedef float _z_type;
+      _z_type z;
+
+    Point32():
+      x(0),
+      y(0),
+      z(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_x;
+      u_x.real = this->x;
+      *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->x);
+      union {
+        float real;
+        uint32_t base;
+      } u_y;
+      u_y.real = this->y;
+      *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->y);
+      union {
+        float real;
+        uint32_t base;
+      } u_z;
+      u_z.real = this->z;
+      *(outbuffer + offset + 0) = (u_z.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_z.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_z.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_z.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->z);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_x;
+      u_x.base = 0;
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->x = u_x.real;
+      offset += sizeof(this->x);
+      union {
+        float real;
+        uint32_t base;
+      } u_y;
+      u_y.base = 0;
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->y = u_y.real;
+      offset += sizeof(this->y);
+      union {
+        float real;
+        uint32_t base;
+      } u_z;
+      u_z.base = 0;
+      u_z.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_z.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_z.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_z.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->z = u_z.real;
+      offset += sizeof(this->z);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/Point32"; };
+    const char * getMD5(){ return "cc153912f1453b708d221682bc23d9ac"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/PointStamped.h b/otto_controller_source/Inc/geometry_msgs/PointStamped.h
new file mode 100644 (file)
index 0000000..366a090
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_PointStamped_h
+#define _ROS_geometry_msgs_PointStamped_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Point.h"
+
+namespace geometry_msgs
+{
+
+  class PointStamped : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Point _point_type;
+      _point_type point;
+
+    PointStamped():
+      header(),
+      point()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->point.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->point.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/PointStamped"; };
+    const char * getMD5(){ return "c63aecb41bfdfd6b7e1fac37c7cbe7bf"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/Polygon.h b/otto_controller_source/Inc/geometry_msgs/Polygon.h
new file mode 100644 (file)
index 0000000..c709714
--- /dev/null
@@ -0,0 +1,64 @@
+#ifndef _ROS_geometry_msgs_Polygon_h
+#define _ROS_geometry_msgs_Polygon_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Point32.h"
+
+namespace geometry_msgs
+{
+
+  class Polygon : public ros::Msg
+  {
+    public:
+      uint32_t points_length;
+      typedef geometry_msgs::Point32 _points_type;
+      _points_type st_points;
+      _points_type * points;
+
+    Polygon():
+      points_length(0), points(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->points_length);
+      for( uint32_t i = 0; i < points_length; i++){
+      offset += this->points[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->points_length);
+      if(points_lengthT > points_length)
+        this->points = (geometry_msgs::Point32*)realloc(this->points, points_lengthT * sizeof(geometry_msgs::Point32));
+      points_length = points_lengthT;
+      for( uint32_t i = 0; i < points_length; i++){
+      offset += this->st_points.deserialize(inbuffer + offset);
+        memcpy( &(this->points[i]), &(this->st_points), sizeof(geometry_msgs::Point32));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/Polygon"; };
+    const char * getMD5(){ return "cd60a26494a087f577976f0329fa120e"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/PolygonStamped.h b/otto_controller_source/Inc/geometry_msgs/PolygonStamped.h
new file mode 100644 (file)
index 0000000..3c179a0
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_PolygonStamped_h
+#define _ROS_geometry_msgs_PolygonStamped_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Polygon.h"
+
+namespace geometry_msgs
+{
+
+  class PolygonStamped : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Polygon _polygon_type;
+      _polygon_type polygon;
+
+    PolygonStamped():
+      header(),
+      polygon()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->polygon.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->polygon.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/PolygonStamped"; };
+    const char * getMD5(){ return "c6be8f7dc3bee7fe9e8d296070f53340"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/Pose.h b/otto_controller_source/Inc/geometry_msgs/Pose.h
new file mode 100644 (file)
index 0000000..79d5f48
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_Pose_h
+#define _ROS_geometry_msgs_Pose_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Point.h"
+#include "geometry_msgs/Quaternion.h"
+
+namespace geometry_msgs
+{
+
+  class Pose : public ros::Msg
+  {
+    public:
+      typedef geometry_msgs::Point _position_type;
+      _position_type position;
+      typedef geometry_msgs::Quaternion _orientation_type;
+      _orientation_type orientation;
+
+    Pose():
+      position(),
+      orientation()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->position.serialize(outbuffer + offset);
+      offset += this->orientation.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->position.deserialize(inbuffer + offset);
+      offset += this->orientation.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/Pose"; };
+    const char * getMD5(){ return "e45d45a5a1ce597b249e23fb30fc871f"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/Pose2D.h b/otto_controller_source/Inc/geometry_msgs/Pose2D.h
new file mode 100644 (file)
index 0000000..abf07e9
--- /dev/null
@@ -0,0 +1,53 @@
+#ifndef _ROS_geometry_msgs_Pose2D_h
+#define _ROS_geometry_msgs_Pose2D_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace geometry_msgs
+{
+
+  class Pose2D : public ros::Msg
+  {
+    public:
+      typedef float _x_type;
+      _x_type x;
+      typedef float _y_type;
+      _y_type y;
+      typedef float _theta_type;
+      _theta_type theta;
+
+    Pose2D():
+      x(0),
+      y(0),
+      theta(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += serializeAvrFloat64(outbuffer + offset, this->x);
+      offset += serializeAvrFloat64(outbuffer + offset, this->y);
+      offset += serializeAvrFloat64(outbuffer + offset, this->theta);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->x));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->y));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->theta));
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/Pose2D"; };
+    const char * getMD5(){ return "938fa65709584ad8e77d238529be13b8"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/PoseArray.h b/otto_controller_source/Inc/geometry_msgs/PoseArray.h
new file mode 100644 (file)
index 0000000..f7f7887
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef _ROS_geometry_msgs_PoseArray_h
+#define _ROS_geometry_msgs_PoseArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Pose.h"
+
+namespace geometry_msgs
+{
+
+  class PoseArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t poses_length;
+      typedef geometry_msgs::Pose _poses_type;
+      _poses_type st_poses;
+      _poses_type * poses;
+
+    PoseArray():
+      header(),
+      poses_length(0), poses(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->poses_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->poses_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->poses_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->poses_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->poses_length);
+      for( uint32_t i = 0; i < poses_length; i++){
+      offset += this->poses[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t poses_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->poses_length);
+      if(poses_lengthT > poses_length)
+        this->poses = (geometry_msgs::Pose*)realloc(this->poses, poses_lengthT * sizeof(geometry_msgs::Pose));
+      poses_length = poses_lengthT;
+      for( uint32_t i = 0; i < poses_length; i++){
+      offset += this->st_poses.deserialize(inbuffer + offset);
+        memcpy( &(this->poses[i]), &(this->st_poses), sizeof(geometry_msgs::Pose));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/PoseArray"; };
+    const char * getMD5(){ return "916c28c5764443f268b296bb671b9d97"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/PoseStamped.h b/otto_controller_source/Inc/geometry_msgs/PoseStamped.h
new file mode 100644 (file)
index 0000000..26a6ba6
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_PoseStamped_h
+#define _ROS_geometry_msgs_PoseStamped_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Pose.h"
+
+namespace geometry_msgs
+{
+
+  class PoseStamped : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Pose _pose_type;
+      _pose_type pose;
+
+    PoseStamped():
+      header(),
+      pose()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->pose.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->pose.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/PoseStamped"; };
+    const char * getMD5(){ return "d3812c3cbc69362b77dc0b19b345f8f5"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/PoseWithCovariance.h b/otto_controller_source/Inc/geometry_msgs/PoseWithCovariance.h
new file mode 100644 (file)
index 0000000..fa6bec9
--- /dev/null
@@ -0,0 +1,52 @@
+#ifndef _ROS_geometry_msgs_PoseWithCovariance_h
+#define _ROS_geometry_msgs_PoseWithCovariance_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Pose.h"
+
+namespace geometry_msgs
+{
+
+  class PoseWithCovariance : public ros::Msg
+  {
+    public:
+      typedef geometry_msgs::Pose _pose_type;
+      _pose_type pose;
+      float covariance[36];
+
+    PoseWithCovariance():
+      pose(),
+      covariance()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->pose.serialize(outbuffer + offset);
+      for( uint32_t i = 0; i < 36; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->covariance[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->pose.deserialize(inbuffer + offset);
+      for( uint32_t i = 0; i < 36; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->covariance[i]));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/PoseWithCovariance"; };
+    const char * getMD5(){ return "c23e848cf1b7533a8d7c259073a97e6f"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/PoseWithCovarianceStamped.h b/otto_controller_source/Inc/geometry_msgs/PoseWithCovarianceStamped.h
new file mode 100644 (file)
index 0000000..46a94c0
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_PoseWithCovarianceStamped_h
+#define _ROS_geometry_msgs_PoseWithCovarianceStamped_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/PoseWithCovariance.h"
+
+namespace geometry_msgs
+{
+
+  class PoseWithCovarianceStamped : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::PoseWithCovariance _pose_type;
+      _pose_type pose;
+
+    PoseWithCovarianceStamped():
+      header(),
+      pose()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->pose.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->pose.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/PoseWithCovarianceStamped"; };
+    const char * getMD5(){ return "953b798c0f514ff060a53a3498ce6246"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/Quaternion.h b/otto_controller_source/Inc/geometry_msgs/Quaternion.h
new file mode 100644 (file)
index 0000000..0e60637
--- /dev/null
@@ -0,0 +1,58 @@
+#ifndef _ROS_geometry_msgs_Quaternion_h
+#define _ROS_geometry_msgs_Quaternion_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace geometry_msgs
+{
+
+  class Quaternion : public ros::Msg
+  {
+    public:
+      typedef float _x_type;
+      _x_type x;
+      typedef float _y_type;
+      _y_type y;
+      typedef float _z_type;
+      _z_type z;
+      typedef float _w_type;
+      _w_type w;
+
+    Quaternion():
+      x(0),
+      y(0),
+      z(0),
+      w(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += serializeAvrFloat64(outbuffer + offset, this->x);
+      offset += serializeAvrFloat64(outbuffer + offset, this->y);
+      offset += serializeAvrFloat64(outbuffer + offset, this->z);
+      offset += serializeAvrFloat64(outbuffer + offset, this->w);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->x));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->y));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->z));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->w));
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/Quaternion"; };
+    const char * getMD5(){ return "a779879fadf0160734f906b8c19c7004"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/QuaternionStamped.h b/otto_controller_source/Inc/geometry_msgs/QuaternionStamped.h
new file mode 100644 (file)
index 0000000..1cc08fc
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_QuaternionStamped_h
+#define _ROS_geometry_msgs_QuaternionStamped_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Quaternion.h"
+
+namespace geometry_msgs
+{
+
+  class QuaternionStamped : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Quaternion _quaternion_type;
+      _quaternion_type quaternion;
+
+    QuaternionStamped():
+      header(),
+      quaternion()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->quaternion.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->quaternion.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/QuaternionStamped"; };
+    const char * getMD5(){ return "e57f1e547e0e1fd13504588ffc8334e2"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/Transform.h b/otto_controller_source/Inc/geometry_msgs/Transform.h
new file mode 100644 (file)
index 0000000..33645d1
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_Transform_h
+#define _ROS_geometry_msgs_Transform_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Vector3.h"
+#include "geometry_msgs/Quaternion.h"
+
+namespace geometry_msgs
+{
+
+  class Transform : public ros::Msg
+  {
+    public:
+      typedef geometry_msgs::Vector3 _translation_type;
+      _translation_type translation;
+      typedef geometry_msgs::Quaternion _rotation_type;
+      _rotation_type rotation;
+
+    Transform():
+      translation(),
+      rotation()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->translation.serialize(outbuffer + offset);
+      offset += this->rotation.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->translation.deserialize(inbuffer + offset);
+      offset += this->rotation.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/Transform"; };
+    const char * getMD5(){ return "ac9eff44abf714214112b05d54a3cf9b"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/TransformStamped.h b/otto_controller_source/Inc/geometry_msgs/TransformStamped.h
new file mode 100644 (file)
index 0000000..91d453d
--- /dev/null
@@ -0,0 +1,67 @@
+#ifndef _ROS_geometry_msgs_TransformStamped_h
+#define _ROS_geometry_msgs_TransformStamped_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Transform.h"
+
+namespace geometry_msgs
+{
+
+  class TransformStamped : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef const char* _child_frame_id_type;
+      _child_frame_id_type child_frame_id;
+      typedef geometry_msgs::Transform _transform_type;
+      _transform_type transform;
+
+    TransformStamped():
+      header(),
+      child_frame_id(""),
+      transform()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      uint32_t length_child_frame_id = strlen(this->child_frame_id);
+      varToArr(outbuffer + offset, length_child_frame_id);
+      offset += 4;
+      memcpy(outbuffer + offset, this->child_frame_id, length_child_frame_id);
+      offset += length_child_frame_id;
+      offset += this->transform.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t length_child_frame_id;
+      arrToVar(length_child_frame_id, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_child_frame_id; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_child_frame_id-1]=0;
+      this->child_frame_id = (char *)(inbuffer + offset-1);
+      offset += length_child_frame_id;
+      offset += this->transform.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/TransformStamped"; };
+    const char * getMD5(){ return "b5764a33bfeb3588febc2682852579b0"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/Twist.h b/otto_controller_source/Inc/geometry_msgs/Twist.h
new file mode 100644 (file)
index 0000000..8352f64
--- /dev/null
@@ -0,0 +1,49 @@
+#ifndef _ROS_geometry_msgs_Twist_h
+#define _ROS_geometry_msgs_Twist_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Vector3.h"
+
+namespace geometry_msgs
+{
+
+  class Twist : public ros::Msg
+  {
+    public:
+      typedef geometry_msgs::Vector3 _linear_type;
+      _linear_type linear;
+      typedef geometry_msgs::Vector3 _angular_type;
+      _angular_type angular;
+
+    Twist():
+      linear(),
+      angular()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->linear.serialize(outbuffer + offset);
+      offset += this->angular.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->linear.deserialize(inbuffer + offset);
+      offset += this->angular.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/Twist"; };
+    const char * getMD5(){ return "9f195f881246fdfa2798d1d3eebca84a"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/TwistStamped.h b/otto_controller_source/Inc/geometry_msgs/TwistStamped.h
new file mode 100644 (file)
index 0000000..53b6450
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_TwistStamped_h
+#define _ROS_geometry_msgs_TwistStamped_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Twist.h"
+
+namespace geometry_msgs
+{
+
+  class TwistStamped : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Twist _twist_type;
+      _twist_type twist;
+
+    TwistStamped():
+      header(),
+      twist()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->twist.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->twist.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/TwistStamped"; };
+    const char * getMD5(){ return "98d34b0043a2093cf9d9345ab6eef12e"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/TwistWithCovariance.h b/otto_controller_source/Inc/geometry_msgs/TwistWithCovariance.h
new file mode 100644 (file)
index 0000000..da28433
--- /dev/null
@@ -0,0 +1,52 @@
+#ifndef _ROS_geometry_msgs_TwistWithCovariance_h
+#define _ROS_geometry_msgs_TwistWithCovariance_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Twist.h"
+
+namespace geometry_msgs
+{
+
+  class TwistWithCovariance : public ros::Msg
+  {
+    public:
+      typedef geometry_msgs::Twist _twist_type;
+      _twist_type twist;
+      float covariance[36];
+
+    TwistWithCovariance():
+      twist(),
+      covariance()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->twist.serialize(outbuffer + offset);
+      for( uint32_t i = 0; i < 36; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->covariance[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->twist.deserialize(inbuffer + offset);
+      for( uint32_t i = 0; i < 36; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->covariance[i]));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/TwistWithCovariance"; };
+    const char * getMD5(){ return "1fe8a28e6890a4cc3ae4c3ca5c7d82e6"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/TwistWithCovarianceStamped.h b/otto_controller_source/Inc/geometry_msgs/TwistWithCovarianceStamped.h
new file mode 100644 (file)
index 0000000..68affe3
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_TwistWithCovarianceStamped_h
+#define _ROS_geometry_msgs_TwistWithCovarianceStamped_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/TwistWithCovariance.h"
+
+namespace geometry_msgs
+{
+
+  class TwistWithCovarianceStamped : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::TwistWithCovariance _twist_type;
+      _twist_type twist;
+
+    TwistWithCovarianceStamped():
+      header(),
+      twist()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->twist.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->twist.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/TwistWithCovarianceStamped"; };
+    const char * getMD5(){ return "8927a1a12fb2607ceea095b2dc440a96"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/Vector3.h b/otto_controller_source/Inc/geometry_msgs/Vector3.h
new file mode 100644 (file)
index 0000000..cf72ced
--- /dev/null
@@ -0,0 +1,53 @@
+#ifndef _ROS_geometry_msgs_Vector3_h
+#define _ROS_geometry_msgs_Vector3_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace geometry_msgs
+{
+
+  class Vector3 : public ros::Msg
+  {
+    public:
+      typedef float _x_type;
+      _x_type x;
+      typedef float _y_type;
+      _y_type y;
+      typedef float _z_type;
+      _z_type z;
+
+    Vector3():
+      x(0),
+      y(0),
+      z(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += serializeAvrFloat64(outbuffer + offset, this->x);
+      offset += serializeAvrFloat64(outbuffer + offset, this->y);
+      offset += serializeAvrFloat64(outbuffer + offset, this->z);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->x));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->y));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->z));
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/Vector3"; };
+    const char * getMD5(){ return "4a842b65f413084dc2b10fb484ea7f17"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/Vector3Stamped.h b/otto_controller_source/Inc/geometry_msgs/Vector3Stamped.h
new file mode 100644 (file)
index 0000000..787ebe8
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_Vector3Stamped_h
+#define _ROS_geometry_msgs_Vector3Stamped_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Vector3.h"
+
+namespace geometry_msgs
+{
+
+  class Vector3Stamped : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Vector3 _vector_type;
+      _vector_type vector;
+
+    Vector3Stamped():
+      header(),
+      vector()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->vector.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->vector.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/Vector3Stamped"; };
+    const char * getMD5(){ return "7b324c7325e683bf02a9b14b01090ec7"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/Wrench.h b/otto_controller_source/Inc/geometry_msgs/Wrench.h
new file mode 100644 (file)
index 0000000..cf7d124
--- /dev/null
@@ -0,0 +1,49 @@
+#ifndef _ROS_geometry_msgs_Wrench_h
+#define _ROS_geometry_msgs_Wrench_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Vector3.h"
+
+namespace geometry_msgs
+{
+
+  class Wrench : public ros::Msg
+  {
+    public:
+      typedef geometry_msgs::Vector3 _force_type;
+      _force_type force;
+      typedef geometry_msgs::Vector3 _torque_type;
+      _torque_type torque;
+
+    Wrench():
+      force(),
+      torque()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->force.serialize(outbuffer + offset);
+      offset += this->torque.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->force.deserialize(inbuffer + offset);
+      offset += this->torque.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/Wrench"; };
+    const char * getMD5(){ return "4f539cf138b23283b520fd271b567936"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/geometry_msgs/WrenchStamped.h b/otto_controller_source/Inc/geometry_msgs/WrenchStamped.h
new file mode 100644 (file)
index 0000000..6f041db
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_geometry_msgs_WrenchStamped_h
+#define _ROS_geometry_msgs_WrenchStamped_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Wrench.h"
+
+namespace geometry_msgs
+{
+
+  class WrenchStamped : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Wrench _wrench_type;
+      _wrench_type wrench;
+
+    WrenchStamped():
+      header(),
+      wrench()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->wrench.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->wrench.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "geometry_msgs/WrenchStamped"; };
+    const char * getMD5(){ return "d78d3cb249ce23087ade7e7d0c40cfa7"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/laser_assembler/AssembleScans.h b/otto_controller_source/Inc/laser_assembler/AssembleScans.h
new file mode 100644 (file)
index 0000000..7aa8745
--- /dev/null
@@ -0,0 +1,123 @@
+#ifndef _ROS_SERVICE_AssembleScans_h
+#define _ROS_SERVICE_AssembleScans_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/time.h"
+#include "sensor_msgs/PointCloud.h"
+
+namespace laser_assembler
+{
+
+static const char ASSEMBLESCANS[] = "laser_assembler/AssembleScans";
+
+  class AssembleScansRequest : public ros::Msg
+  {
+    public:
+      typedef ros::Time _begin_type;
+      _begin_type begin;
+      typedef ros::Time _end_type;
+      _end_type end;
+
+    AssembleScansRequest():
+      begin(),
+      end()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->begin.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->begin.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->begin.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->begin.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->begin.sec);
+      *(outbuffer + offset + 0) = (this->begin.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->begin.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->begin.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->begin.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->begin.nsec);
+      *(outbuffer + offset + 0) = (this->end.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->end.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->end.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->end.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->end.sec);
+      *(outbuffer + offset + 0) = (this->end.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->end.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->end.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->end.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->end.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->begin.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->begin.sec);
+      this->begin.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->begin.nsec);
+      this->end.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->end.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->end.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->end.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->end.sec);
+      this->end.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->end.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return ASSEMBLESCANS; };
+    const char * getMD5(){ return "b341004f74e15bf5e1b2053a9183bdc7"; };
+
+  };
+
+  class AssembleScansResponse : public ros::Msg
+  {
+    public:
+      typedef sensor_msgs::PointCloud _cloud_type;
+      _cloud_type cloud;
+
+    AssembleScansResponse():
+      cloud()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->cloud.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->cloud.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return ASSEMBLESCANS; };
+    const char * getMD5(){ return "4217b28a903e4ad7869a83b3653110ff"; };
+
+  };
+
+  class AssembleScans {
+    public:
+    typedef AssembleScansRequest Request;
+    typedef AssembleScansResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/laser_assembler/AssembleScans2.h b/otto_controller_source/Inc/laser_assembler/AssembleScans2.h
new file mode 100644 (file)
index 0000000..ae2f6b7
--- /dev/null
@@ -0,0 +1,123 @@
+#ifndef _ROS_SERVICE_AssembleScans2_h
+#define _ROS_SERVICE_AssembleScans2_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "sensor_msgs/PointCloud2.h"
+#include "ros/time.h"
+
+namespace laser_assembler
+{
+
+static const char ASSEMBLESCANS2[] = "laser_assembler/AssembleScans2";
+
+  class AssembleScans2Request : public ros::Msg
+  {
+    public:
+      typedef ros::Time _begin_type;
+      _begin_type begin;
+      typedef ros::Time _end_type;
+      _end_type end;
+
+    AssembleScans2Request():
+      begin(),
+      end()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->begin.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->begin.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->begin.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->begin.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->begin.sec);
+      *(outbuffer + offset + 0) = (this->begin.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->begin.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->begin.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->begin.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->begin.nsec);
+      *(outbuffer + offset + 0) = (this->end.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->end.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->end.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->end.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->end.sec);
+      *(outbuffer + offset + 0) = (this->end.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->end.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->end.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->end.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->end.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->begin.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->begin.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->begin.sec);
+      this->begin.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->begin.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->begin.nsec);
+      this->end.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->end.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->end.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->end.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->end.sec);
+      this->end.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->end.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->end.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return ASSEMBLESCANS2; };
+    const char * getMD5(){ return "b341004f74e15bf5e1b2053a9183bdc7"; };
+
+  };
+
+  class AssembleScans2Response : public ros::Msg
+  {
+    public:
+      typedef sensor_msgs::PointCloud2 _cloud_type;
+      _cloud_type cloud;
+
+    AssembleScans2Response():
+      cloud()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->cloud.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->cloud.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return ASSEMBLESCANS2; };
+    const char * getMD5(){ return "96cec5374164b3b3d1d7ef5d7628a7ed"; };
+
+  };
+
+  class AssembleScans2 {
+    public:
+    typedef AssembleScans2Request Request;
+    typedef AssembleScans2Response Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/map_msgs/GetMapROI.h b/otto_controller_source/Inc/map_msgs/GetMapROI.h
new file mode 100644 (file)
index 0000000..c52bf37
--- /dev/null
@@ -0,0 +1,96 @@
+#ifndef _ROS_SERVICE_GetMapROI_h
+#define _ROS_SERVICE_GetMapROI_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "nav_msgs/OccupancyGrid.h"
+
+namespace map_msgs
+{
+
+static const char GETMAPROI[] = "map_msgs/GetMapROI";
+
+  class GetMapROIRequest : public ros::Msg
+  {
+    public:
+      typedef float _x_type;
+      _x_type x;
+      typedef float _y_type;
+      _y_type y;
+      typedef float _l_x_type;
+      _l_x_type l_x;
+      typedef float _l_y_type;
+      _l_y_type l_y;
+
+    GetMapROIRequest():
+      x(0),
+      y(0),
+      l_x(0),
+      l_y(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += serializeAvrFloat64(outbuffer + offset, this->x);
+      offset += serializeAvrFloat64(outbuffer + offset, this->y);
+      offset += serializeAvrFloat64(outbuffer + offset, this->l_x);
+      offset += serializeAvrFloat64(outbuffer + offset, this->l_y);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->x));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->y));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->l_x));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->l_y));
+     return offset;
+    }
+
+    const char * getType(){ return GETMAPROI; };
+    const char * getMD5(){ return "43c2ff8f45af555c0eaf070c401e9a47"; };
+
+  };
+
+  class GetMapROIResponse : public ros::Msg
+  {
+    public:
+      typedef nav_msgs::OccupancyGrid _sub_map_type;
+      _sub_map_type sub_map;
+
+    GetMapROIResponse():
+      sub_map()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->sub_map.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->sub_map.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return GETMAPROI; };
+    const char * getMD5(){ return "4d1986519c00d81967d2891a606b234c"; };
+
+  };
+
+  class GetMapROI {
+    public:
+    typedef GetMapROIRequest Request;
+    typedef GetMapROIResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/map_msgs/GetPointMap.h b/otto_controller_source/Inc/map_msgs/GetPointMap.h
new file mode 100644 (file)
index 0000000..3da8ab1
--- /dev/null
@@ -0,0 +1,76 @@
+#ifndef _ROS_SERVICE_GetPointMap_h
+#define _ROS_SERVICE_GetPointMap_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "sensor_msgs/PointCloud2.h"
+
+namespace map_msgs
+{
+
+static const char GETPOINTMAP[] = "map_msgs/GetPointMap";
+
+  class GetPointMapRequest : public ros::Msg
+  {
+    public:
+
+    GetPointMapRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return GETPOINTMAP; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class GetPointMapResponse : public ros::Msg
+  {
+    public:
+      typedef sensor_msgs::PointCloud2 _map_type;
+      _map_type map;
+
+    GetPointMapResponse():
+      map()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->map.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->map.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return GETPOINTMAP; };
+    const char * getMD5(){ return "b84fbb39505086eb6a62d933c75cb7b4"; };
+
+  };
+
+  class GetPointMap {
+    public:
+    typedef GetPointMapRequest Request;
+    typedef GetPointMapResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/map_msgs/GetPointMapROI.h b/otto_controller_source/Inc/map_msgs/GetPointMapROI.h
new file mode 100644 (file)
index 0000000..77750d4
--- /dev/null
@@ -0,0 +1,111 @@
+#ifndef _ROS_SERVICE_GetPointMapROI_h
+#define _ROS_SERVICE_GetPointMapROI_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "sensor_msgs/PointCloud2.h"
+
+namespace map_msgs
+{
+
+static const char GETPOINTMAPROI[] = "map_msgs/GetPointMapROI";
+
+  class GetPointMapROIRequest : public ros::Msg
+  {
+    public:
+      typedef float _x_type;
+      _x_type x;
+      typedef float _y_type;
+      _y_type y;
+      typedef float _z_type;
+      _z_type z;
+      typedef float _r_type;
+      _r_type r;
+      typedef float _l_x_type;
+      _l_x_type l_x;
+      typedef float _l_y_type;
+      _l_y_type l_y;
+      typedef float _l_z_type;
+      _l_z_type l_z;
+
+    GetPointMapROIRequest():
+      x(0),
+      y(0),
+      z(0),
+      r(0),
+      l_x(0),
+      l_y(0),
+      l_z(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += serializeAvrFloat64(outbuffer + offset, this->x);
+      offset += serializeAvrFloat64(outbuffer + offset, this->y);
+      offset += serializeAvrFloat64(outbuffer + offset, this->z);
+      offset += serializeAvrFloat64(outbuffer + offset, this->r);
+      offset += serializeAvrFloat64(outbuffer + offset, this->l_x);
+      offset += serializeAvrFloat64(outbuffer + offset, this->l_y);
+      offset += serializeAvrFloat64(outbuffer + offset, this->l_z);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->x));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->y));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->z));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->r));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->l_x));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->l_y));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->l_z));
+     return offset;
+    }
+
+    const char * getType(){ return GETPOINTMAPROI; };
+    const char * getMD5(){ return "895f7e437a9a6dd225316872b187a303"; };
+
+  };
+
+  class GetPointMapROIResponse : public ros::Msg
+  {
+    public:
+      typedef sensor_msgs::PointCloud2 _sub_map_type;
+      _sub_map_type sub_map;
+
+    GetPointMapROIResponse():
+      sub_map()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->sub_map.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->sub_map.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return GETPOINTMAPROI; };
+    const char * getMD5(){ return "313769f8b0e724525c6463336cbccd63"; };
+
+  };
+
+  class GetPointMapROI {
+    public:
+    typedef GetPointMapROIRequest Request;
+    typedef GetPointMapROIResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/map_msgs/OccupancyGridUpdate.h b/otto_controller_source/Inc/map_msgs/OccupancyGridUpdate.h
new file mode 100644 (file)
index 0000000..b672a18
--- /dev/null
@@ -0,0 +1,156 @@
+#ifndef _ROS_map_msgs_OccupancyGridUpdate_h
+#define _ROS_map_msgs_OccupancyGridUpdate_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace map_msgs
+{
+
+  class OccupancyGridUpdate : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef int32_t _x_type;
+      _x_type x;
+      typedef int32_t _y_type;
+      _y_type y;
+      typedef uint32_t _width_type;
+      _width_type width;
+      typedef uint32_t _height_type;
+      _height_type height;
+      uint32_t data_length;
+      typedef int8_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    OccupancyGridUpdate():
+      header(),
+      x(0),
+      y(0),
+      width(0),
+      height(0),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_x;
+      u_x.real = this->x;
+      *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->x);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_y;
+      u_y.real = this->y;
+      *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->y);
+      *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->width);
+      *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->height);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_datai;
+      u_datai.real = this->data[i];
+      *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_x;
+      u_x.base = 0;
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->x = u_x.real;
+      offset += sizeof(this->x);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_y;
+      u_y.base = 0;
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->y = u_y.real;
+      offset += sizeof(this->y);
+      this->width =  ((uint32_t) (*(inbuffer + offset)));
+      this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->width);
+      this->height =  ((uint32_t) (*(inbuffer + offset)));
+      this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->height);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (int8_t*)realloc(this->data, data_lengthT * sizeof(int8_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_st_data;
+      u_st_data.base = 0;
+      u_st_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->st_data = u_st_data.real;
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(int8_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "map_msgs/OccupancyGridUpdate"; };
+    const char * getMD5(){ return "b295be292b335c34718bd939deebe1c9"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/map_msgs/PointCloud2Update.h b/otto_controller_source/Inc/map_msgs/PointCloud2Update.h
new file mode 100644 (file)
index 0000000..dcb9339
--- /dev/null
@@ -0,0 +1,65 @@
+#ifndef _ROS_map_msgs_PointCloud2Update_h
+#define _ROS_map_msgs_PointCloud2Update_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "sensor_msgs/PointCloud2.h"
+
+namespace map_msgs
+{
+
+  class PointCloud2Update : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef uint32_t _type_type;
+      _type_type type;
+      typedef sensor_msgs::PointCloud2 _points_type;
+      _points_type points;
+      enum { ADD = 0 };
+      enum { DELETE = 1 };
+
+    PointCloud2Update():
+      header(),
+      type(0),
+      points()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->type >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->type >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->type >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->type);
+      offset += this->points.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      this->type =  ((uint32_t) (*(inbuffer + offset)));
+      this->type |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->type |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->type |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->type);
+      offset += this->points.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "map_msgs/PointCloud2Update"; };
+    const char * getMD5(){ return "6c58e4f249ae9cd2b24fb1ee0f99195e"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/map_msgs/ProjectedMap.h b/otto_controller_source/Inc/map_msgs/ProjectedMap.h
new file mode 100644 (file)
index 0000000..e44c269
--- /dev/null
@@ -0,0 +1,54 @@
+#ifndef _ROS_map_msgs_ProjectedMap_h
+#define _ROS_map_msgs_ProjectedMap_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "nav_msgs/OccupancyGrid.h"
+
+namespace map_msgs
+{
+
+  class ProjectedMap : public ros::Msg
+  {
+    public:
+      typedef nav_msgs::OccupancyGrid _map_type;
+      _map_type map;
+      typedef float _min_z_type;
+      _min_z_type min_z;
+      typedef float _max_z_type;
+      _max_z_type max_z;
+
+    ProjectedMap():
+      map(),
+      min_z(0),
+      max_z(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->map.serialize(outbuffer + offset);
+      offset += serializeAvrFloat64(outbuffer + offset, this->min_z);
+      offset += serializeAvrFloat64(outbuffer + offset, this->max_z);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->map.deserialize(inbuffer + offset);
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->min_z));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->max_z));
+     return offset;
+    }
+
+    const char * getType(){ return "map_msgs/ProjectedMap"; };
+    const char * getMD5(){ return "7bbe8f96e45089681dc1ea7d023cbfca"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/map_msgs/ProjectedMapInfo.h b/otto_controller_source/Inc/map_msgs/ProjectedMapInfo.h
new file mode 100644 (file)
index 0000000..2f33ffb
--- /dev/null
@@ -0,0 +1,85 @@
+#ifndef _ROS_map_msgs_ProjectedMapInfo_h
+#define _ROS_map_msgs_ProjectedMapInfo_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace map_msgs
+{
+
+  class ProjectedMapInfo : public ros::Msg
+  {
+    public:
+      typedef const char* _frame_id_type;
+      _frame_id_type frame_id;
+      typedef float _x_type;
+      _x_type x;
+      typedef float _y_type;
+      _y_type y;
+      typedef float _width_type;
+      _width_type width;
+      typedef float _height_type;
+      _height_type height;
+      typedef float _min_z_type;
+      _min_z_type min_z;
+      typedef float _max_z_type;
+      _max_z_type max_z;
+
+    ProjectedMapInfo():
+      frame_id(""),
+      x(0),
+      y(0),
+      width(0),
+      height(0),
+      min_z(0),
+      max_z(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_frame_id = strlen(this->frame_id);
+      varToArr(outbuffer + offset, length_frame_id);
+      offset += 4;
+      memcpy(outbuffer + offset, this->frame_id, length_frame_id);
+      offset += length_frame_id;
+      offset += serializeAvrFloat64(outbuffer + offset, this->x);
+      offset += serializeAvrFloat64(outbuffer + offset, this->y);
+      offset += serializeAvrFloat64(outbuffer + offset, this->width);
+      offset += serializeAvrFloat64(outbuffer + offset, this->height);
+      offset += serializeAvrFloat64(outbuffer + offset, this->min_z);
+      offset += serializeAvrFloat64(outbuffer + offset, this->max_z);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_frame_id;
+      arrToVar(length_frame_id, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_frame_id; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_frame_id-1]=0;
+      this->frame_id = (char *)(inbuffer + offset-1);
+      offset += length_frame_id;
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->x));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->y));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->width));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->height));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->min_z));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->max_z));
+     return offset;
+    }
+
+    const char * getType(){ return "map_msgs/ProjectedMapInfo"; };
+    const char * getMD5(){ return "2dc10595ae94de23f22f8a6d2a0eef7a"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/map_msgs/ProjectedMapsInfo.h b/otto_controller_source/Inc/map_msgs/ProjectedMapsInfo.h
new file mode 100644 (file)
index 0000000..b515b94
--- /dev/null
@@ -0,0 +1,96 @@
+#ifndef _ROS_SERVICE_ProjectedMapsInfo_h
+#define _ROS_SERVICE_ProjectedMapsInfo_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "map_msgs/ProjectedMapInfo.h"
+
+namespace map_msgs
+{
+
+static const char PROJECTEDMAPSINFO[] = "map_msgs/ProjectedMapsInfo";
+
+  class ProjectedMapsInfoRequest : public ros::Msg
+  {
+    public:
+      uint32_t projected_maps_info_length;
+      typedef map_msgs::ProjectedMapInfo _projected_maps_info_type;
+      _projected_maps_info_type st_projected_maps_info;
+      _projected_maps_info_type * projected_maps_info;
+
+    ProjectedMapsInfoRequest():
+      projected_maps_info_length(0), projected_maps_info(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->projected_maps_info_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->projected_maps_info_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->projected_maps_info_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->projected_maps_info_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->projected_maps_info_length);
+      for( uint32_t i = 0; i < projected_maps_info_length; i++){
+      offset += this->projected_maps_info[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t projected_maps_info_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->projected_maps_info_length);
+      if(projected_maps_info_lengthT > projected_maps_info_length)
+        this->projected_maps_info = (map_msgs::ProjectedMapInfo*)realloc(this->projected_maps_info, projected_maps_info_lengthT * sizeof(map_msgs::ProjectedMapInfo));
+      projected_maps_info_length = projected_maps_info_lengthT;
+      for( uint32_t i = 0; i < projected_maps_info_length; i++){
+      offset += this->st_projected_maps_info.deserialize(inbuffer + offset);
+        memcpy( &(this->projected_maps_info[i]), &(this->st_projected_maps_info), sizeof(map_msgs::ProjectedMapInfo));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return PROJECTEDMAPSINFO; };
+    const char * getMD5(){ return "d7980a33202421c8cd74565e57a4d229"; };
+
+  };
+
+  class ProjectedMapsInfoResponse : public ros::Msg
+  {
+    public:
+
+    ProjectedMapsInfoResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return PROJECTEDMAPSINFO; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class ProjectedMapsInfo {
+    public:
+    typedef ProjectedMapsInfoRequest Request;
+    typedef ProjectedMapsInfoResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/map_msgs/SaveMap.h b/otto_controller_source/Inc/map_msgs/SaveMap.h
new file mode 100644 (file)
index 0000000..c304c22
--- /dev/null
@@ -0,0 +1,76 @@
+#ifndef _ROS_SERVICE_SaveMap_h
+#define _ROS_SERVICE_SaveMap_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/String.h"
+
+namespace map_msgs
+{
+
+static const char SAVEMAP[] = "map_msgs/SaveMap";
+
+  class SaveMapRequest : public ros::Msg
+  {
+    public:
+      typedef std_msgs::String _filename_type;
+      _filename_type filename;
+
+    SaveMapRequest():
+      filename()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->filename.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->filename.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return SAVEMAP; };
+    const char * getMD5(){ return "716e25f9d9dc76ceba197f93cbf05dc7"; };
+
+  };
+
+  class SaveMapResponse : public ros::Msg
+  {
+    public:
+
+    SaveMapResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return SAVEMAP; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class SaveMap {
+    public:
+    typedef SaveMapRequest Request;
+    typedef SaveMapResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/map_msgs/SetMapProjections.h b/otto_controller_source/Inc/map_msgs/SetMapProjections.h
new file mode 100644 (file)
index 0000000..1ead172
--- /dev/null
@@ -0,0 +1,96 @@
+#ifndef _ROS_SERVICE_SetMapProjections_h
+#define _ROS_SERVICE_SetMapProjections_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "map_msgs/ProjectedMapInfo.h"
+
+namespace map_msgs
+{
+
+static const char SETMAPPROJECTIONS[] = "map_msgs/SetMapProjections";
+
+  class SetMapProjectionsRequest : public ros::Msg
+  {
+    public:
+
+    SetMapProjectionsRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return SETMAPPROJECTIONS; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class SetMapProjectionsResponse : public ros::Msg
+  {
+    public:
+      uint32_t projected_maps_info_length;
+      typedef map_msgs::ProjectedMapInfo _projected_maps_info_type;
+      _projected_maps_info_type st_projected_maps_info;
+      _projected_maps_info_type * projected_maps_info;
+
+    SetMapProjectionsResponse():
+      projected_maps_info_length(0), projected_maps_info(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->projected_maps_info_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->projected_maps_info_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->projected_maps_info_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->projected_maps_info_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->projected_maps_info_length);
+      for( uint32_t i = 0; i < projected_maps_info_length; i++){
+      offset += this->projected_maps_info[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t projected_maps_info_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      projected_maps_info_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->projected_maps_info_length);
+      if(projected_maps_info_lengthT > projected_maps_info_length)
+        this->projected_maps_info = (map_msgs::ProjectedMapInfo*)realloc(this->projected_maps_info, projected_maps_info_lengthT * sizeof(map_msgs::ProjectedMapInfo));
+      projected_maps_info_length = projected_maps_info_lengthT;
+      for( uint32_t i = 0; i < projected_maps_info_length; i++){
+      offset += this->st_projected_maps_info.deserialize(inbuffer + offset);
+        memcpy( &(this->projected_maps_info[i]), &(this->st_projected_maps_info), sizeof(map_msgs::ProjectedMapInfo));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return SETMAPPROJECTIONS; };
+    const char * getMD5(){ return "d7980a33202421c8cd74565e57a4d229"; };
+
+  };
+
+  class SetMapProjections {
+    public:
+    typedef SetMapProjectionsRequest Request;
+    typedef SetMapProjectionsResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/nav_msgs/GetMap.h b/otto_controller_source/Inc/nav_msgs/GetMap.h
new file mode 100644 (file)
index 0000000..ef7e3fa
--- /dev/null
@@ -0,0 +1,76 @@
+#ifndef _ROS_SERVICE_GetMap_h
+#define _ROS_SERVICE_GetMap_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "nav_msgs/OccupancyGrid.h"
+
+namespace nav_msgs
+{
+
+static const char GETMAP[] = "nav_msgs/GetMap";
+
+  class GetMapRequest : public ros::Msg
+  {
+    public:
+
+    GetMapRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return GETMAP; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class GetMapResponse : public ros::Msg
+  {
+    public:
+      typedef nav_msgs::OccupancyGrid _map_type;
+      _map_type map;
+
+    GetMapResponse():
+      map()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->map.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->map.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return GETMAP; };
+    const char * getMD5(){ return "6cdd0a18e0aff5b0a3ca2326a89b54ff"; };
+
+  };
+
+  class GetMap {
+    public:
+    typedef GetMapRequest Request;
+    typedef GetMapResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/nav_msgs/GetMapAction.h b/otto_controller_source/Inc/nav_msgs/GetMapAction.h
new file mode 100644 (file)
index 0000000..9b5284a
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_nav_msgs_GetMapAction_h
+#define _ROS_nav_msgs_GetMapAction_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "nav_msgs/GetMapActionGoal.h"
+#include "nav_msgs/GetMapActionResult.h"
+#include "nav_msgs/GetMapActionFeedback.h"
+
+namespace nav_msgs
+{
+
+  class GetMapAction : public ros::Msg
+  {
+    public:
+      typedef nav_msgs::GetMapActionGoal _action_goal_type;
+      _action_goal_type action_goal;
+      typedef nav_msgs::GetMapActionResult _action_result_type;
+      _action_result_type action_result;
+      typedef nav_msgs::GetMapActionFeedback _action_feedback_type;
+      _action_feedback_type action_feedback;
+
+    GetMapAction():
+      action_goal(),
+      action_result(),
+      action_feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->action_goal.serialize(outbuffer + offset);
+      offset += this->action_result.serialize(outbuffer + offset);
+      offset += this->action_feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->action_goal.deserialize(inbuffer + offset);
+      offset += this->action_result.deserialize(inbuffer + offset);
+      offset += this->action_feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "nav_msgs/GetMapAction"; };
+    const char * getMD5(){ return "e611ad23fbf237c031b7536416dc7cd7"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/nav_msgs/GetMapActionFeedback.h b/otto_controller_source/Inc/nav_msgs/GetMapActionFeedback.h
new file mode 100644 (file)
index 0000000..7c946f8
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_nav_msgs_GetMapActionFeedback_h
+#define _ROS_nav_msgs_GetMapActionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "nav_msgs/GetMapFeedback.h"
+
+namespace nav_msgs
+{
+
+  class GetMapActionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef nav_msgs::GetMapFeedback _feedback_type;
+      _feedback_type feedback;
+
+    GetMapActionFeedback():
+      header(),
+      status(),
+      feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "nav_msgs/GetMapActionFeedback"; };
+    const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/nav_msgs/GetMapActionGoal.h b/otto_controller_source/Inc/nav_msgs/GetMapActionGoal.h
new file mode 100644 (file)
index 0000000..ed72749
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_nav_msgs_GetMapActionGoal_h
+#define _ROS_nav_msgs_GetMapActionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalID.h"
+#include "nav_msgs/GetMapGoal.h"
+
+namespace nav_msgs
+{
+
+  class GetMapActionGoal : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef nav_msgs::GetMapGoal _goal_type;
+      _goal_type goal;
+
+    GetMapActionGoal():
+      header(),
+      goal_id(),
+      goal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->goal_id.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "nav_msgs/GetMapActionGoal"; };
+    const char * getMD5(){ return "4b30be6cd12b9e72826df56b481f40e0"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/nav_msgs/GetMapActionResult.h b/otto_controller_source/Inc/nav_msgs/GetMapActionResult.h
new file mode 100644 (file)
index 0000000..a25f1b0
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_nav_msgs_GetMapActionResult_h
+#define _ROS_nav_msgs_GetMapActionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "nav_msgs/GetMapResult.h"
+
+namespace nav_msgs
+{
+
+  class GetMapActionResult : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef nav_msgs::GetMapResult _result_type;
+      _result_type result;
+
+    GetMapActionResult():
+      header(),
+      status(),
+      result()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->result.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->result.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "nav_msgs/GetMapActionResult"; };
+    const char * getMD5(){ return "ac66e5b9a79bb4bbd33dab245236c892"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/nav_msgs/GetMapFeedback.h b/otto_controller_source/Inc/nav_msgs/GetMapFeedback.h
new file mode 100644 (file)
index 0000000..aaf6b38
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _ROS_nav_msgs_GetMapFeedback_h
+#define _ROS_nav_msgs_GetMapFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace nav_msgs
+{
+
+  class GetMapFeedback : public ros::Msg
+  {
+    public:
+
+    GetMapFeedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return "nav_msgs/GetMapFeedback"; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/nav_msgs/GetMapGoal.h b/otto_controller_source/Inc/nav_msgs/GetMapGoal.h
new file mode 100644 (file)
index 0000000..01b972b
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _ROS_nav_msgs_GetMapGoal_h
+#define _ROS_nav_msgs_GetMapGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace nav_msgs
+{
+
+  class GetMapGoal : public ros::Msg
+  {
+    public:
+
+    GetMapGoal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return "nav_msgs/GetMapGoal"; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/nav_msgs/GetMapResult.h b/otto_controller_source/Inc/nav_msgs/GetMapResult.h
new file mode 100644 (file)
index 0000000..41f3166
--- /dev/null
@@ -0,0 +1,44 @@
+#ifndef _ROS_nav_msgs_GetMapResult_h
+#define _ROS_nav_msgs_GetMapResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "nav_msgs/OccupancyGrid.h"
+
+namespace nav_msgs
+{
+
+  class GetMapResult : public ros::Msg
+  {
+    public:
+      typedef nav_msgs::OccupancyGrid _map_type;
+      _map_type map;
+
+    GetMapResult():
+      map()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->map.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->map.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "nav_msgs/GetMapResult"; };
+    const char * getMD5(){ return "6cdd0a18e0aff5b0a3ca2326a89b54ff"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/nav_msgs/GetPlan.h b/otto_controller_source/Inc/nav_msgs/GetPlan.h
new file mode 100644 (file)
index 0000000..fe312b2
--- /dev/null
@@ -0,0 +1,111 @@
+#ifndef _ROS_SERVICE_GetPlan_h
+#define _ROS_SERVICE_GetPlan_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/PoseStamped.h"
+#include "nav_msgs/Path.h"
+
+namespace nav_msgs
+{
+
+static const char GETPLAN[] = "nav_msgs/GetPlan";
+
+  class GetPlanRequest : public ros::Msg
+  {
+    public:
+      typedef geometry_msgs::PoseStamped _start_type;
+      _start_type start;
+      typedef geometry_msgs::PoseStamped _goal_type;
+      _goal_type goal;
+      typedef float _tolerance_type;
+      _tolerance_type tolerance;
+
+    GetPlanRequest():
+      start(),
+      goal(),
+      tolerance(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->start.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_tolerance;
+      u_tolerance.real = this->tolerance;
+      *(outbuffer + offset + 0) = (u_tolerance.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_tolerance.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_tolerance.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_tolerance.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->tolerance);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->start.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_tolerance;
+      u_tolerance.base = 0;
+      u_tolerance.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_tolerance.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_tolerance.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_tolerance.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->tolerance = u_tolerance.real;
+      offset += sizeof(this->tolerance);
+     return offset;
+    }
+
+    const char * getType(){ return GETPLAN; };
+    const char * getMD5(){ return "e25a43e0752bcca599a8c2eef8282df8"; };
+
+  };
+
+  class GetPlanResponse : public ros::Msg
+  {
+    public:
+      typedef nav_msgs::Path _plan_type;
+      _plan_type plan;
+
+    GetPlanResponse():
+      plan()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->plan.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->plan.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return GETPLAN; };
+    const char * getMD5(){ return "0002bc113c0259d71f6cf8cbc9430e18"; };
+
+  };
+
+  class GetPlan {
+    public:
+    typedef GetPlanRequest Request;
+    typedef GetPlanResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/nav_msgs/GridCells.h b/otto_controller_source/Inc/nav_msgs/GridCells.h
new file mode 100644 (file)
index 0000000..448e669
--- /dev/null
@@ -0,0 +1,118 @@
+#ifndef _ROS_nav_msgs_GridCells_h
+#define _ROS_nav_msgs_GridCells_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Point.h"
+
+namespace nav_msgs
+{
+
+  class GridCells : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef float _cell_width_type;
+      _cell_width_type cell_width;
+      typedef float _cell_height_type;
+      _cell_height_type cell_height;
+      uint32_t cells_length;
+      typedef geometry_msgs::Point _cells_type;
+      _cells_type st_cells;
+      _cells_type * cells;
+
+    GridCells():
+      header(),
+      cell_width(0),
+      cell_height(0),
+      cells_length(0), cells(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_cell_width;
+      u_cell_width.real = this->cell_width;
+      *(outbuffer + offset + 0) = (u_cell_width.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_cell_width.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_cell_width.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_cell_width.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->cell_width);
+      union {
+        float real;
+        uint32_t base;
+      } u_cell_height;
+      u_cell_height.real = this->cell_height;
+      *(outbuffer + offset + 0) = (u_cell_height.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_cell_height.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_cell_height.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_cell_height.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->cell_height);
+      *(outbuffer + offset + 0) = (this->cells_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->cells_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->cells_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->cells_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->cells_length);
+      for( uint32_t i = 0; i < cells_length; i++){
+      offset += this->cells[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_cell_width;
+      u_cell_width.base = 0;
+      u_cell_width.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_cell_width.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_cell_width.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_cell_width.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->cell_width = u_cell_width.real;
+      offset += sizeof(this->cell_width);
+      union {
+        float real;
+        uint32_t base;
+      } u_cell_height;
+      u_cell_height.base = 0;
+      u_cell_height.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_cell_height.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_cell_height.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_cell_height.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->cell_height = u_cell_height.real;
+      offset += sizeof(this->cell_height);
+      uint32_t cells_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      cells_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      cells_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      cells_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->cells_length);
+      if(cells_lengthT > cells_length)
+        this->cells = (geometry_msgs::Point*)realloc(this->cells, cells_lengthT * sizeof(geometry_msgs::Point));
+      cells_length = cells_lengthT;
+      for( uint32_t i = 0; i < cells_length; i++){
+      offset += this->st_cells.deserialize(inbuffer + offset);
+        memcpy( &(this->cells[i]), &(this->st_cells), sizeof(geometry_msgs::Point));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "nav_msgs/GridCells"; };
+    const char * getMD5(){ return "b9e4f5df6d28e272ebde00a3994830f5"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/nav_msgs/MapMetaData.h b/otto_controller_source/Inc/nav_msgs/MapMetaData.h
new file mode 100644 (file)
index 0000000..5ac655b
--- /dev/null
@@ -0,0 +1,118 @@
+#ifndef _ROS_nav_msgs_MapMetaData_h
+#define _ROS_nav_msgs_MapMetaData_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/time.h"
+#include "geometry_msgs/Pose.h"
+
+namespace nav_msgs
+{
+
+  class MapMetaData : public ros::Msg
+  {
+    public:
+      typedef ros::Time _map_load_time_type;
+      _map_load_time_type map_load_time;
+      typedef float _resolution_type;
+      _resolution_type resolution;
+      typedef uint32_t _width_type;
+      _width_type width;
+      typedef uint32_t _height_type;
+      _height_type height;
+      typedef geometry_msgs::Pose _origin_type;
+      _origin_type origin;
+
+    MapMetaData():
+      map_load_time(),
+      resolution(0),
+      width(0),
+      height(0),
+      origin()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->map_load_time.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->map_load_time.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->map_load_time.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->map_load_time.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->map_load_time.sec);
+      *(outbuffer + offset + 0) = (this->map_load_time.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->map_load_time.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->map_load_time.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->map_load_time.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->map_load_time.nsec);
+      union {
+        float real;
+        uint32_t base;
+      } u_resolution;
+      u_resolution.real = this->resolution;
+      *(outbuffer + offset + 0) = (u_resolution.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_resolution.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_resolution.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_resolution.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->resolution);
+      *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->width);
+      *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->height);
+      offset += this->origin.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->map_load_time.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->map_load_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->map_load_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->map_load_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->map_load_time.sec);
+      this->map_load_time.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->map_load_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->map_load_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->map_load_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->map_load_time.nsec);
+      union {
+        float real;
+        uint32_t base;
+      } u_resolution;
+      u_resolution.base = 0;
+      u_resolution.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_resolution.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_resolution.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_resolution.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->resolution = u_resolution.real;
+      offset += sizeof(this->resolution);
+      this->width =  ((uint32_t) (*(inbuffer + offset)));
+      this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->width);
+      this->height =  ((uint32_t) (*(inbuffer + offset)));
+      this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->height);
+      offset += this->origin.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "nav_msgs/MapMetaData"; };
+    const char * getMD5(){ return "10cfc8a2818024d3248802c00c95f11b"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/nav_msgs/OccupancyGrid.h b/otto_controller_source/Inc/nav_msgs/OccupancyGrid.h
new file mode 100644 (file)
index 0000000..9513832
--- /dev/null
@@ -0,0 +1,88 @@
+#ifndef _ROS_nav_msgs_OccupancyGrid_h
+#define _ROS_nav_msgs_OccupancyGrid_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "nav_msgs/MapMetaData.h"
+
+namespace nav_msgs
+{
+
+  class OccupancyGrid : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef nav_msgs::MapMetaData _info_type;
+      _info_type info;
+      uint32_t data_length;
+      typedef int8_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    OccupancyGrid():
+      header(),
+      info(),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->info.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_datai;
+      u_datai.real = this->data[i];
+      *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->info.deserialize(inbuffer + offset);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (int8_t*)realloc(this->data, data_lengthT * sizeof(int8_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_st_data;
+      u_st_data.base = 0;
+      u_st_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->st_data = u_st_data.real;
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(int8_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "nav_msgs/OccupancyGrid"; };
+    const char * getMD5(){ return "3381f2d731d4076ec5c71b0759edbe4e"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/nav_msgs/Odometry.h b/otto_controller_source/Inc/nav_msgs/Odometry.h
new file mode 100644 (file)
index 0000000..2f578ef
--- /dev/null
@@ -0,0 +1,73 @@
+#ifndef _ROS_nav_msgs_Odometry_h
+#define _ROS_nav_msgs_Odometry_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/PoseWithCovariance.h"
+#include "geometry_msgs/TwistWithCovariance.h"
+
+namespace nav_msgs
+{
+
+  class Odometry : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef const char* _child_frame_id_type;
+      _child_frame_id_type child_frame_id;
+      typedef geometry_msgs::PoseWithCovariance _pose_type;
+      _pose_type pose;
+      typedef geometry_msgs::TwistWithCovariance _twist_type;
+      _twist_type twist;
+
+    Odometry():
+      header(),
+      child_frame_id(""),
+      pose(),
+      twist()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      uint32_t length_child_frame_id = strlen(this->child_frame_id);
+      varToArr(outbuffer + offset, length_child_frame_id);
+      offset += 4;
+      memcpy(outbuffer + offset, this->child_frame_id, length_child_frame_id);
+      offset += length_child_frame_id;
+      offset += this->pose.serialize(outbuffer + offset);
+      offset += this->twist.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t length_child_frame_id;
+      arrToVar(length_child_frame_id, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_child_frame_id; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_child_frame_id-1]=0;
+      this->child_frame_id = (char *)(inbuffer + offset-1);
+      offset += length_child_frame_id;
+      offset += this->pose.deserialize(inbuffer + offset);
+      offset += this->twist.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "nav_msgs/Odometry"; };
+    const char * getMD5(){ return "cd5e73d190d741a2f92e81eda573aca7"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/nav_msgs/Path.h b/otto_controller_source/Inc/nav_msgs/Path.h
new file mode 100644 (file)
index 0000000..e8ea825
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef _ROS_nav_msgs_Path_h
+#define _ROS_nav_msgs_Path_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/PoseStamped.h"
+
+namespace nav_msgs
+{
+
+  class Path : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t poses_length;
+      typedef geometry_msgs::PoseStamped _poses_type;
+      _poses_type st_poses;
+      _poses_type * poses;
+
+    Path():
+      header(),
+      poses_length(0), poses(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->poses_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->poses_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->poses_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->poses_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->poses_length);
+      for( uint32_t i = 0; i < poses_length; i++){
+      offset += this->poses[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t poses_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->poses_length);
+      if(poses_lengthT > poses_length)
+        this->poses = (geometry_msgs::PoseStamped*)realloc(this->poses, poses_lengthT * sizeof(geometry_msgs::PoseStamped));
+      poses_length = poses_lengthT;
+      for( uint32_t i = 0; i < poses_length; i++){
+      offset += this->st_poses.deserialize(inbuffer + offset);
+        memcpy( &(this->poses[i]), &(this->st_poses), sizeof(geometry_msgs::PoseStamped));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "nav_msgs/Path"; };
+    const char * getMD5(){ return "6227e2b7e9cce15051f669a5e197bbf7"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/nav_msgs/SetMap.h b/otto_controller_source/Inc/nav_msgs/SetMap.h
new file mode 100644 (file)
index 0000000..717cead
--- /dev/null
@@ -0,0 +1,100 @@
+#ifndef _ROS_SERVICE_SetMap_h
+#define _ROS_SERVICE_SetMap_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "nav_msgs/OccupancyGrid.h"
+#include "geometry_msgs/PoseWithCovarianceStamped.h"
+
+namespace nav_msgs
+{
+
+static const char SETMAP[] = "nav_msgs/SetMap";
+
+  class SetMapRequest : public ros::Msg
+  {
+    public:
+      typedef nav_msgs::OccupancyGrid _map_type;
+      _map_type map;
+      typedef geometry_msgs::PoseWithCovarianceStamped _initial_pose_type;
+      _initial_pose_type initial_pose;
+
+    SetMapRequest():
+      map(),
+      initial_pose()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->map.serialize(outbuffer + offset);
+      offset += this->initial_pose.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->map.deserialize(inbuffer + offset);
+      offset += this->initial_pose.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return SETMAP; };
+    const char * getMD5(){ return "91149a20d7be299b87c340df8cc94fd4"; };
+
+  };
+
+  class SetMapResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+
+    SetMapResponse():
+      success(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+     return offset;
+    }
+
+    const char * getType(){ return SETMAP; };
+    const char * getMD5(){ return "358e233cde0c8a8bcfea4ce193f8fc15"; };
+
+  };
+
+  class SetMap {
+    public:
+    typedef SetMapRequest Request;
+    typedef SetMapResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/nodelet/NodeletList.h b/otto_controller_source/Inc/nodelet/NodeletList.h
new file mode 100644 (file)
index 0000000..6210fa0
--- /dev/null
@@ -0,0 +1,107 @@
+#ifndef _ROS_SERVICE_NodeletList_h
+#define _ROS_SERVICE_NodeletList_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace nodelet
+{
+
+static const char NODELETLIST[] = "nodelet/NodeletList";
+
+  class NodeletListRequest : public ros::Msg
+  {
+    public:
+
+    NodeletListRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return NODELETLIST; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class NodeletListResponse : public ros::Msg
+  {
+    public:
+      uint32_t nodelets_length;
+      typedef char* _nodelets_type;
+      _nodelets_type st_nodelets;
+      _nodelets_type * nodelets;
+
+    NodeletListResponse():
+      nodelets_length(0), nodelets(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->nodelets_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->nodelets_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->nodelets_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->nodelets_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->nodelets_length);
+      for( uint32_t i = 0; i < nodelets_length; i++){
+      uint32_t length_nodeletsi = strlen(this->nodelets[i]);
+      varToArr(outbuffer + offset, length_nodeletsi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->nodelets[i], length_nodeletsi);
+      offset += length_nodeletsi;
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t nodelets_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      nodelets_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      nodelets_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      nodelets_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->nodelets_length);
+      if(nodelets_lengthT > nodelets_length)
+        this->nodelets = (char**)realloc(this->nodelets, nodelets_lengthT * sizeof(char*));
+      nodelets_length = nodelets_lengthT;
+      for( uint32_t i = 0; i < nodelets_length; i++){
+      uint32_t length_st_nodelets;
+      arrToVar(length_st_nodelets, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_nodelets; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_nodelets-1]=0;
+      this->st_nodelets = (char *)(inbuffer + offset-1);
+      offset += length_st_nodelets;
+        memcpy( &(this->nodelets[i]), &(this->st_nodelets), sizeof(char*));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return NODELETLIST; };
+    const char * getMD5(){ return "99c7b10e794f5600b8030e697e946ca7"; };
+
+  };
+
+  class NodeletList {
+    public:
+    typedef NodeletListRequest Request;
+    typedef NodeletListResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/nodelet/NodeletLoad.h b/otto_controller_source/Inc/nodelet/NodeletLoad.h
new file mode 100644 (file)
index 0000000..e7a9c5c
--- /dev/null
@@ -0,0 +1,250 @@
+#ifndef _ROS_SERVICE_NodeletLoad_h
+#define _ROS_SERVICE_NodeletLoad_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace nodelet
+{
+
+static const char NODELETLOAD[] = "nodelet/NodeletLoad";
+
+  class NodeletLoadRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef const char* _type_type;
+      _type_type type;
+      uint32_t remap_source_args_length;
+      typedef char* _remap_source_args_type;
+      _remap_source_args_type st_remap_source_args;
+      _remap_source_args_type * remap_source_args;
+      uint32_t remap_target_args_length;
+      typedef char* _remap_target_args_type;
+      _remap_target_args_type st_remap_target_args;
+      _remap_target_args_type * remap_target_args;
+      uint32_t my_argv_length;
+      typedef char* _my_argv_type;
+      _my_argv_type st_my_argv;
+      _my_argv_type * my_argv;
+      typedef const char* _bond_id_type;
+      _bond_id_type bond_id;
+
+    NodeletLoadRequest():
+      name(""),
+      type(""),
+      remap_source_args_length(0), remap_source_args(NULL),
+      remap_target_args_length(0), remap_target_args(NULL),
+      my_argv_length(0), my_argv(NULL),
+      bond_id("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      uint32_t length_type = strlen(this->type);
+      varToArr(outbuffer + offset, length_type);
+      offset += 4;
+      memcpy(outbuffer + offset, this->type, length_type);
+      offset += length_type;
+      *(outbuffer + offset + 0) = (this->remap_source_args_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->remap_source_args_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->remap_source_args_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->remap_source_args_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->remap_source_args_length);
+      for( uint32_t i = 0; i < remap_source_args_length; i++){
+      uint32_t length_remap_source_argsi = strlen(this->remap_source_args[i]);
+      varToArr(outbuffer + offset, length_remap_source_argsi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->remap_source_args[i], length_remap_source_argsi);
+      offset += length_remap_source_argsi;
+      }
+      *(outbuffer + offset + 0) = (this->remap_target_args_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->remap_target_args_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->remap_target_args_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->remap_target_args_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->remap_target_args_length);
+      for( uint32_t i = 0; i < remap_target_args_length; i++){
+      uint32_t length_remap_target_argsi = strlen(this->remap_target_args[i]);
+      varToArr(outbuffer + offset, length_remap_target_argsi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->remap_target_args[i], length_remap_target_argsi);
+      offset += length_remap_target_argsi;
+      }
+      *(outbuffer + offset + 0) = (this->my_argv_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->my_argv_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->my_argv_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->my_argv_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->my_argv_length);
+      for( uint32_t i = 0; i < my_argv_length; i++){
+      uint32_t length_my_argvi = strlen(this->my_argv[i]);
+      varToArr(outbuffer + offset, length_my_argvi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->my_argv[i], length_my_argvi);
+      offset += length_my_argvi;
+      }
+      uint32_t length_bond_id = strlen(this->bond_id);
+      varToArr(outbuffer + offset, length_bond_id);
+      offset += 4;
+      memcpy(outbuffer + offset, this->bond_id, length_bond_id);
+      offset += length_bond_id;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      uint32_t length_type;
+      arrToVar(length_type, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_type; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_type-1]=0;
+      this->type = (char *)(inbuffer + offset-1);
+      offset += length_type;
+      uint32_t remap_source_args_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      remap_source_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      remap_source_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      remap_source_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->remap_source_args_length);
+      if(remap_source_args_lengthT > remap_source_args_length)
+        this->remap_source_args = (char**)realloc(this->remap_source_args, remap_source_args_lengthT * sizeof(char*));
+      remap_source_args_length = remap_source_args_lengthT;
+      for( uint32_t i = 0; i < remap_source_args_length; i++){
+      uint32_t length_st_remap_source_args;
+      arrToVar(length_st_remap_source_args, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_remap_source_args; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_remap_source_args-1]=0;
+      this->st_remap_source_args = (char *)(inbuffer + offset-1);
+      offset += length_st_remap_source_args;
+        memcpy( &(this->remap_source_args[i]), &(this->st_remap_source_args), sizeof(char*));
+      }
+      uint32_t remap_target_args_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      remap_target_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      remap_target_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      remap_target_args_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->remap_target_args_length);
+      if(remap_target_args_lengthT > remap_target_args_length)
+        this->remap_target_args = (char**)realloc(this->remap_target_args, remap_target_args_lengthT * sizeof(char*));
+      remap_target_args_length = remap_target_args_lengthT;
+      for( uint32_t i = 0; i < remap_target_args_length; i++){
+      uint32_t length_st_remap_target_args;
+      arrToVar(length_st_remap_target_args, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_remap_target_args; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_remap_target_args-1]=0;
+      this->st_remap_target_args = (char *)(inbuffer + offset-1);
+      offset += length_st_remap_target_args;
+        memcpy( &(this->remap_target_args[i]), &(this->st_remap_target_args), sizeof(char*));
+      }
+      uint32_t my_argv_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      my_argv_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      my_argv_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      my_argv_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->my_argv_length);
+      if(my_argv_lengthT > my_argv_length)
+        this->my_argv = (char**)realloc(this->my_argv, my_argv_lengthT * sizeof(char*));
+      my_argv_length = my_argv_lengthT;
+      for( uint32_t i = 0; i < my_argv_length; i++){
+      uint32_t length_st_my_argv;
+      arrToVar(length_st_my_argv, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_my_argv; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_my_argv-1]=0;
+      this->st_my_argv = (char *)(inbuffer + offset-1);
+      offset += length_st_my_argv;
+        memcpy( &(this->my_argv[i]), &(this->st_my_argv), sizeof(char*));
+      }
+      uint32_t length_bond_id;
+      arrToVar(length_bond_id, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_bond_id; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_bond_id-1]=0;
+      this->bond_id = (char *)(inbuffer + offset-1);
+      offset += length_bond_id;
+     return offset;
+    }
+
+    const char * getType(){ return NODELETLOAD; };
+    const char * getMD5(){ return "c6e28cc4d2e259249d96cfb50658fbec"; };
+
+  };
+
+  class NodeletLoadResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+
+    NodeletLoadResponse():
+      success(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+     return offset;
+    }
+
+    const char * getType(){ return NODELETLOAD; };
+    const char * getMD5(){ return "358e233cde0c8a8bcfea4ce193f8fc15"; };
+
+  };
+
+  class NodeletLoad {
+    public:
+    typedef NodeletLoadRequest Request;
+    typedef NodeletLoadResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/nodelet/NodeletUnload.h b/otto_controller_source/Inc/nodelet/NodeletUnload.h
new file mode 100644 (file)
index 0000000..bc865b4
--- /dev/null
@@ -0,0 +1,105 @@
+#ifndef _ROS_SERVICE_NodeletUnload_h
+#define _ROS_SERVICE_NodeletUnload_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace nodelet
+{
+
+static const char NODELETUNLOAD[] = "nodelet/NodeletUnload";
+
+  class NodeletUnloadRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+
+    NodeletUnloadRequest():
+      name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+     return offset;
+    }
+
+    const char * getType(){ return NODELETUNLOAD; };
+    const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; };
+
+  };
+
+  class NodeletUnloadResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+
+    NodeletUnloadResponse():
+      success(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+     return offset;
+    }
+
+    const char * getType(){ return NODELETUNLOAD; };
+    const char * getMD5(){ return "358e233cde0c8a8bcfea4ce193f8fc15"; };
+
+  };
+
+  class NodeletUnload {
+    public:
+    typedef NodeletUnloadRequest Request;
+    typedef NodeletUnloadResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/pcl_msgs/ModelCoefficients.h b/otto_controller_source/Inc/pcl_msgs/ModelCoefficients.h
new file mode 100644 (file)
index 0000000..7b169e8
--- /dev/null
@@ -0,0 +1,88 @@
+#ifndef _ROS_pcl_msgs_ModelCoefficients_h
+#define _ROS_pcl_msgs_ModelCoefficients_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace pcl_msgs
+{
+
+  class ModelCoefficients : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t values_length;
+      typedef float _values_type;
+      _values_type st_values;
+      _values_type * values;
+
+    ModelCoefficients():
+      header(),
+      values_length(0), values(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->values_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->values_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->values_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->values_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->values_length);
+      for( uint32_t i = 0; i < values_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_valuesi;
+      u_valuesi.real = this->values[i];
+      *(outbuffer + offset + 0) = (u_valuesi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_valuesi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_valuesi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_valuesi.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->values[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t values_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      values_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      values_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      values_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->values_length);
+      if(values_lengthT > values_length)
+        this->values = (float*)realloc(this->values, values_lengthT * sizeof(float));
+      values_length = values_lengthT;
+      for( uint32_t i = 0; i < values_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_st_values;
+      u_st_values.base = 0;
+      u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_values = u_st_values.real;
+      offset += sizeof(this->st_values);
+        memcpy( &(this->values[i]), &(this->st_values), sizeof(float));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "pcl_msgs/ModelCoefficients"; };
+    const char * getMD5(){ return "ca27dea75e72cb894cd36f9e5005e93e"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/pcl_msgs/PointIndices.h b/otto_controller_source/Inc/pcl_msgs/PointIndices.h
new file mode 100644 (file)
index 0000000..3d55941
--- /dev/null
@@ -0,0 +1,88 @@
+#ifndef _ROS_pcl_msgs_PointIndices_h
+#define _ROS_pcl_msgs_PointIndices_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace pcl_msgs
+{
+
+  class PointIndices : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t indices_length;
+      typedef int32_t _indices_type;
+      _indices_type st_indices;
+      _indices_type * indices;
+
+    PointIndices():
+      header(),
+      indices_length(0), indices(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->indices_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->indices_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->indices_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->indices_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->indices_length);
+      for( uint32_t i = 0; i < indices_length; i++){
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_indicesi;
+      u_indicesi.real = this->indices[i];
+      *(outbuffer + offset + 0) = (u_indicesi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_indicesi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_indicesi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_indicesi.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->indices[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t indices_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      indices_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      indices_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      indices_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->indices_length);
+      if(indices_lengthT > indices_length)
+        this->indices = (int32_t*)realloc(this->indices, indices_lengthT * sizeof(int32_t));
+      indices_length = indices_lengthT;
+      for( uint32_t i = 0; i < indices_length; i++){
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_st_indices;
+      u_st_indices.base = 0;
+      u_st_indices.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_indices.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_indices.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_indices.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_indices = u_st_indices.real;
+      offset += sizeof(this->st_indices);
+        memcpy( &(this->indices[i]), &(this->st_indices), sizeof(int32_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "pcl_msgs/PointIndices"; };
+    const char * getMD5(){ return "458c7998b7eaf99908256472e273b3d4"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/pcl_msgs/PolygonMesh.h b/otto_controller_source/Inc/pcl_msgs/PolygonMesh.h
new file mode 100644 (file)
index 0000000..5769b20
--- /dev/null
@@ -0,0 +1,76 @@
+#ifndef _ROS_pcl_msgs_PolygonMesh_h
+#define _ROS_pcl_msgs_PolygonMesh_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "sensor_msgs/PointCloud2.h"
+#include "pcl_msgs/Vertices.h"
+
+namespace pcl_msgs
+{
+
+  class PolygonMesh : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef sensor_msgs::PointCloud2 _cloud_type;
+      _cloud_type cloud;
+      uint32_t polygons_length;
+      typedef pcl_msgs::Vertices _polygons_type;
+      _polygons_type st_polygons;
+      _polygons_type * polygons;
+
+    PolygonMesh():
+      header(),
+      cloud(),
+      polygons_length(0), polygons(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->cloud.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->polygons_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->polygons_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->polygons_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->polygons_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->polygons_length);
+      for( uint32_t i = 0; i < polygons_length; i++){
+      offset += this->polygons[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->cloud.deserialize(inbuffer + offset);
+      uint32_t polygons_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      polygons_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      polygons_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      polygons_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->polygons_length);
+      if(polygons_lengthT > polygons_length)
+        this->polygons = (pcl_msgs::Vertices*)realloc(this->polygons, polygons_lengthT * sizeof(pcl_msgs::Vertices));
+      polygons_length = polygons_lengthT;
+      for( uint32_t i = 0; i < polygons_length; i++){
+      offset += this->st_polygons.deserialize(inbuffer + offset);
+        memcpy( &(this->polygons[i]), &(this->st_polygons), sizeof(pcl_msgs::Vertices));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "pcl_msgs/PolygonMesh"; };
+    const char * getMD5(){ return "45a5fc6ad2cde8489600a790acc9a38a"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/pcl_msgs/Vertices.h b/otto_controller_source/Inc/pcl_msgs/Vertices.h
new file mode 100644 (file)
index 0000000..5601a1e
--- /dev/null
@@ -0,0 +1,71 @@
+#ifndef _ROS_pcl_msgs_Vertices_h
+#define _ROS_pcl_msgs_Vertices_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace pcl_msgs
+{
+
+  class Vertices : public ros::Msg
+  {
+    public:
+      uint32_t vertices_length;
+      typedef uint32_t _vertices_type;
+      _vertices_type st_vertices;
+      _vertices_type * vertices;
+
+    Vertices():
+      vertices_length(0), vertices(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->vertices_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->vertices_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->vertices_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->vertices_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->vertices_length);
+      for( uint32_t i = 0; i < vertices_length; i++){
+      *(outbuffer + offset + 0) = (this->vertices[i] >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->vertices[i] >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->vertices[i] >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->vertices[i] >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->vertices[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t vertices_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->vertices_length);
+      if(vertices_lengthT > vertices_length)
+        this->vertices = (uint32_t*)realloc(this->vertices, vertices_lengthT * sizeof(uint32_t));
+      vertices_length = vertices_lengthT;
+      for( uint32_t i = 0; i < vertices_length; i++){
+      this->st_vertices =  ((uint32_t) (*(inbuffer + offset)));
+      this->st_vertices |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->st_vertices |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->st_vertices |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->st_vertices);
+        memcpy( &(this->vertices[i]), &(this->st_vertices), sizeof(uint32_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "pcl_msgs/Vertices"; };
+    const char * getMD5(){ return "39bd7b1c23763ddd1b882b97cb7cfe11"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/polled_camera/GetPolledImage.h b/otto_controller_source/Inc/polled_camera/GetPolledImage.h
new file mode 100644 (file)
index 0000000..b062405
--- /dev/null
@@ -0,0 +1,202 @@
+#ifndef _ROS_SERVICE_GetPolledImage_h
+#define _ROS_SERVICE_GetPolledImage_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "sensor_msgs/RegionOfInterest.h"
+#include "ros/duration.h"
+#include "ros/time.h"
+
+namespace polled_camera
+{
+
+static const char GETPOLLEDIMAGE[] = "polled_camera/GetPolledImage";
+
+  class GetPolledImageRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _response_namespace_type;
+      _response_namespace_type response_namespace;
+      typedef ros::Duration _timeout_type;
+      _timeout_type timeout;
+      typedef uint32_t _binning_x_type;
+      _binning_x_type binning_x;
+      typedef uint32_t _binning_y_type;
+      _binning_y_type binning_y;
+      typedef sensor_msgs::RegionOfInterest _roi_type;
+      _roi_type roi;
+
+    GetPolledImageRequest():
+      response_namespace(""),
+      timeout(),
+      binning_x(0),
+      binning_y(0),
+      roi()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_response_namespace = strlen(this->response_namespace);
+      varToArr(outbuffer + offset, length_response_namespace);
+      offset += 4;
+      memcpy(outbuffer + offset, this->response_namespace, length_response_namespace);
+      offset += length_response_namespace;
+      *(outbuffer + offset + 0) = (this->timeout.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->timeout.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->timeout.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->timeout.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->timeout.sec);
+      *(outbuffer + offset + 0) = (this->timeout.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->timeout.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->timeout.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->timeout.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->timeout.nsec);
+      *(outbuffer + offset + 0) = (this->binning_x >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->binning_x >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->binning_x >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->binning_x >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->binning_x);
+      *(outbuffer + offset + 0) = (this->binning_y >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->binning_y >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->binning_y >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->binning_y >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->binning_y);
+      offset += this->roi.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_response_namespace;
+      arrToVar(length_response_namespace, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_response_namespace; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_response_namespace-1]=0;
+      this->response_namespace = (char *)(inbuffer + offset-1);
+      offset += length_response_namespace;
+      this->timeout.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->timeout.sec);
+      this->timeout.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->timeout.nsec);
+      this->binning_x =  ((uint32_t) (*(inbuffer + offset)));
+      this->binning_x |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->binning_x |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->binning_x |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->binning_x);
+      this->binning_y =  ((uint32_t) (*(inbuffer + offset)));
+      this->binning_y |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->binning_y |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->binning_y |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->binning_y);
+      offset += this->roi.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return GETPOLLEDIMAGE; };
+    const char * getMD5(){ return "c77ed43e530fd48e9e7a2a93845e154c"; };
+
+  };
+
+  class GetPolledImageResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+      typedef ros::Time _stamp_type;
+      _stamp_type stamp;
+
+    GetPolledImageResponse():
+      success(0),
+      status_message(""),
+      stamp()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      *(outbuffer + offset + 0) = (this->stamp.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stamp.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stamp.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stamp.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stamp.sec);
+      *(outbuffer + offset + 0) = (this->stamp.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stamp.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stamp.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stamp.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stamp.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+      this->stamp.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->stamp.sec);
+      this->stamp.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->stamp.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return GETPOLLEDIMAGE; };
+    const char * getMD5(){ return "dbf1f851bc511800e6129ccd5a3542ab"; };
+
+  };
+
+  class GetPolledImage {
+    public:
+    typedef GetPolledImageRequest Request;
+    typedef GetPolledImageResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/ros.h b/otto_controller_source/Inc/ros.h
new file mode 100644 (file)
index 0000000..af13995
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2018, Kenta Yonekura (a.k.a. yoneken)
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _ROS_H_
+#define _ROS_H_
+
+#include "ros/node_handle.h"
+#include "STM32Hardware.h"
+
+namespace ros
+{
+  typedef NodeHandle_<STM32Hardware> NodeHandle; // default 25, 25, 512, 512
+}
+
+#endif
diff --git a/otto_controller_source/Inc/ros/duration.h b/otto_controller_source/Inc/ros/duration.h
new file mode 100644 (file)
index 0000000..5ec6d90
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2011, Willow Garage, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _ROS_DURATION_H_
+#define _ROS_DURATION_H_
+
+#include <math.h>
+#include <stdint.h>
+
+namespace ros
+{
+
+void normalizeSecNSecSigned(int32_t& sec, int32_t& nsec);
+
+class Duration
+{
+public:
+  int32_t sec, nsec;
+
+  Duration() : sec(0), nsec(0) {}
+  Duration(int32_t _sec, int32_t _nsec) : sec(_sec), nsec(_nsec)
+  {
+    normalizeSecNSecSigned(sec, nsec);
+  }
+
+  double toSec() const
+  {
+    return (double)sec + 1e-9 * (double)nsec;
+  };
+  void fromSec(double t)
+  {
+    sec = (uint32_t) floor(t);
+    nsec = (uint32_t) round((t - sec) * 1e9);
+  };
+
+  Duration& operator+=(const Duration &rhs);
+  Duration& operator-=(const Duration &rhs);
+  Duration& operator*=(double scale);
+};
+
+}
+
+#endif
+
diff --git a/otto_controller_source/Inc/ros/msg.h b/otto_controller_source/Inc/ros/msg.h
new file mode 100644 (file)
index 0000000..aea0f6f
--- /dev/null
@@ -0,0 +1,148 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2011, Willow Garage, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _ROS_MSG_H_
+#define _ROS_MSG_H_
+
+#include <stdint.h>
+#include <stddef.h>
+
+namespace ros
+{
+
+/* Base Message Type */
+class Msg
+{
+public:
+  virtual int serialize(unsigned char *outbuffer) const = 0;
+  virtual int deserialize(unsigned char *data) = 0;
+  virtual const char * getType() = 0;
+  virtual const char * getMD5() = 0;
+
+  /**
+   * @brief This tricky function handles promoting a 32bit float to a 64bit
+   *        double, so that AVR can publish messages containing float64
+   *        fields, despite AVV having no native support for double.
+   *
+   * @param[out] outbuffer pointer for buffer to serialize to.
+   * @param[in] f value to serialize.
+   *
+   * @return number of bytes to advance the buffer pointer.
+   *
+   */
+  static int serializeAvrFloat64(unsigned char* outbuffer, const float f)
+  {
+    const int32_t* val = (int32_t*) &f;
+    int32_t exp = ((*val >> 23) & 255);
+    if (exp != 0)
+    {
+      exp += 1023 - 127;
+    }
+
+    int32_t sig = *val;
+    *(outbuffer++) = 0;
+    *(outbuffer++) = 0;
+    *(outbuffer++) = 0;
+    *(outbuffer++) = (sig << 5) & 0xff;
+    *(outbuffer++) = (sig >> 3) & 0xff;
+    *(outbuffer++) = (sig >> 11) & 0xff;
+    *(outbuffer++) = ((exp << 4) & 0xF0) | ((sig >> 19) & 0x0F);
+    *(outbuffer++) = (exp >> 4) & 0x7F;
+
+    // Mark negative bit as necessary.
+    if (f < 0)
+    {
+      *(outbuffer - 1) |= 0x80;
+    }
+
+    return 8;
+  }
+
+  /**
+   * @brief This tricky function handles demoting a 64bit double to a
+   *        32bit float, so that AVR can understand messages containing
+   *        float64 fields, despite AVR having no native support for double.
+   *
+   * @param[in] inbuffer pointer for buffer to deserialize from.
+   * @param[out] f pointer to place the deserialized value in.
+   *
+   * @return number of bytes to advance the buffer pointer.
+   */
+  static int deserializeAvrFloat64(const unsigned char* inbuffer, float* f)
+  {
+    uint32_t* val = (uint32_t*)f;
+    inbuffer += 3;
+
+    // Copy truncated mantissa.
+    *val = ((uint32_t)(*(inbuffer++)) >> 5 & 0x07);
+    *val |= ((uint32_t)(*(inbuffer++)) & 0xff) << 3;
+    *val |= ((uint32_t)(*(inbuffer++)) & 0xff) << 11;
+    *val |= ((uint32_t)(*inbuffer) & 0x0f) << 19;
+
+    // Copy truncated exponent.
+    uint32_t exp = ((uint32_t)(*(inbuffer++)) & 0xf0) >> 4;
+    exp |= ((uint32_t)(*inbuffer) & 0x7f) << 4;
+    if (exp != 0)
+    {
+      *val |= ((exp) - 1023 + 127) << 23;
+    }
+
+    // Copy negative sign.
+    *val |= ((uint32_t)(*(inbuffer++)) & 0x80) << 24;
+
+    return 8;
+  }
+
+  // Copy data from variable into a byte array
+  template<typename A, typename V>
+  static void varToArr(A arr, const V var)
+  {
+    for (size_t i = 0; i < sizeof(V); i++)
+      arr[i] = (var >> (8 * i));
+  }
+
+  // Copy data from a byte array into variable
+  template<typename V, typename A>
+  static void arrToVar(V& var, const A arr)
+  {
+    var = 0;
+    for (size_t i = 0; i < sizeof(V); i++)
+      var |= (arr[i] << (8 * i));
+  }
+
+};
+
+}  // namespace ros
+
+#endif
diff --git a/otto_controller_source/Inc/ros/node_handle.h b/otto_controller_source/Inc/ros/node_handle.h
new file mode 100644 (file)
index 0000000..8fa27b1
--- /dev/null
@@ -0,0 +1,686 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2011, Willow Garage, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ROS_NODE_HANDLE_H_
+#define ROS_NODE_HANDLE_H_
+
+#include <stdint.h>
+
+#include "std_msgs/Time.h"
+#include "rosserial_msgs/TopicInfo.h"
+#include "rosserial_msgs/Log.h"
+#include "rosserial_msgs/RequestParam.h"
+
+#include "ros/msg.h"
+
+namespace ros
+{
+
+class NodeHandleBase_
+{
+public:
+  virtual int publish(int id, const Msg* msg) = 0;
+  virtual int spinOnce() = 0;
+  virtual bool connected() = 0;
+};
+}
+
+#include "ros/publisher.h"
+#include "ros/subscriber.h"
+#include "ros/service_server.h"
+#include "ros/service_client.h"
+
+namespace ros
+{
+
+const int SPIN_OK = 0;
+const int SPIN_ERR = -1;
+const int SPIN_TIMEOUT = -2;
+
+const uint8_t SYNC_SECONDS  = 5;
+const uint8_t MODE_FIRST_FF = 0;
+/*
+ * The second sync byte is a protocol version. It's value is 0xff for the first
+ * version of the rosserial protocol (used up to hydro), 0xfe for the second version
+ * (introduced in hydro), 0xfd for the next, and so on. Its purpose is to enable
+ * detection of mismatched protocol versions (e.g. hydro rosserial_python with groovy
+ * rosserial_arduino. It must be changed in both this file and in
+ * rosserial_python/src/rosserial_python/SerialClient.py
+ */
+const uint8_t MODE_PROTOCOL_VER   = 1;
+const uint8_t PROTOCOL_VER1       = 0xff; // through groovy
+const uint8_t PROTOCOL_VER2       = 0xfe; // in hydro
+const uint8_t PROTOCOL_VER        = PROTOCOL_VER2;
+const uint8_t MODE_SIZE_L         = 2;
+const uint8_t MODE_SIZE_H         = 3;
+const uint8_t MODE_SIZE_CHECKSUM  = 4;    // checksum for msg size received from size L and H
+const uint8_t MODE_TOPIC_L        = 5;    // waiting for topic id
+const uint8_t MODE_TOPIC_H        = 6;
+const uint8_t MODE_MESSAGE        = 7;
+const uint8_t MODE_MSG_CHECKSUM   = 8;    // checksum for msg and topic id
+
+
+const uint8_t SERIAL_MSG_TIMEOUT  = 20;   // 20 milliseconds to recieve all of message data
+
+using rosserial_msgs::TopicInfo;
+
+/* Node Handle */
+template<class Hardware,
+         int MAX_SUBSCRIBERS = 25,
+         int MAX_PUBLISHERS = 25,
+         int INPUT_SIZE = 512,
+         int OUTPUT_SIZE = 512>
+class NodeHandle_ : public NodeHandleBase_
+{
+protected:
+  Hardware hardware_;
+
+  /* time used for syncing */
+  uint32_t rt_time;
+
+  /* used for computing current time */
+  uint32_t sec_offset, nsec_offset;
+
+  /* Spinonce maximum work timeout */
+  uint32_t spin_timeout_;
+
+  uint8_t message_in[INPUT_SIZE];
+  uint8_t message_out[OUTPUT_SIZE];
+
+  Publisher * publishers[MAX_PUBLISHERS];
+  Subscriber_ * subscribers[MAX_SUBSCRIBERS];
+
+  /*
+   * Setup Functions
+   */
+public:
+  NodeHandle_() : configured_(false)
+  {
+
+    for (unsigned int i = 0; i < MAX_PUBLISHERS; i++)
+      publishers[i] = 0;
+
+    for (unsigned int i = 0; i < MAX_SUBSCRIBERS; i++)
+      subscribers[i] = 0;
+
+    for (unsigned int i = 0; i < INPUT_SIZE; i++)
+      message_in[i] = 0;
+
+    for (unsigned int i = 0; i < OUTPUT_SIZE; i++)
+      message_out[i] = 0;
+
+    req_param_resp.ints_length = 0;
+    req_param_resp.ints = NULL;
+    req_param_resp.floats_length = 0;
+    req_param_resp.floats = NULL;
+    req_param_resp.ints_length = 0;
+    req_param_resp.ints = NULL;
+
+    spin_timeout_ = 0;
+  }
+
+  Hardware* getHardware()
+  {
+    return &hardware_;
+  }
+
+  /* Start serial, initialize buffers */
+  void initNode()
+  {
+    hardware_.init();
+    mode_ = 0;
+    bytes_ = 0;
+    index_ = 0;
+    topic_ = 0;
+  };
+
+  /* Start a named port, which may be network server IP, initialize buffers */
+  void initNode(char *portName)
+  {
+    hardware_.init(portName);
+    mode_ = 0;
+    bytes_ = 0;
+    index_ = 0;
+    topic_ = 0;
+  };
+
+  /**
+   * @brief Sets the maximum time in millisconds that spinOnce() can work.
+   * This will not effect the processing of the buffer, as spinOnce processes
+   * one byte at a time. It simply sets the maximum time that one call can
+   * process for. You can choose to clear the buffer if that is beneficial if
+   * SPIN_TIMEOUT is returned from spinOnce().
+   * @param timeout The timeout in milliseconds that spinOnce will function.
+   */
+  void setSpinTimeout(const uint32_t& timeout)
+  {
+     spin_timeout_ = timeout;
+  }
+
+protected:
+  //State machine variables for spinOnce
+  int mode_;
+  int bytes_;
+  int topic_;
+  int index_;
+  int checksum_;
+
+  bool configured_;
+
+  /* used for syncing the time */
+  uint32_t last_sync_time;
+  uint32_t last_sync_receive_time;
+  uint32_t last_msg_timeout_time;
+
+public:
+  /* This function goes in your loop() function, it handles
+   *  serial input and callbacks for subscribers.
+   */
+
+
+  virtual int spinOnce()
+  {
+    /* restart if timed out */
+    uint32_t c_time = hardware_.time();
+    if ((c_time - last_sync_receive_time) > (SYNC_SECONDS * 2200))
+    {
+      configured_ = false;
+    }
+
+    /* reset if message has timed out */
+    if (mode_ != MODE_FIRST_FF)
+    {
+      if (c_time > last_msg_timeout_time)
+      {
+        mode_ = MODE_FIRST_FF;
+      }
+    }
+
+    /* while available buffer, read data */
+    while (true)
+    {
+      // If a timeout has been specified, check how long spinOnce has been running.
+      if (spin_timeout_ > 0)
+      {
+        // If the maximum processing timeout has been exceeded, exit with error.
+        // The next spinOnce can continue where it left off, or optionally
+        // based on the application in use, the hardware buffer could be flushed
+        // and start fresh.
+        if ((hardware_.time() - c_time) > spin_timeout_)
+        {
+          // Exit the spin, processing timeout exceeded.
+          return SPIN_TIMEOUT;
+        }
+      }
+      int data = hardware_.read();
+      if (data < 0)
+        break;
+      checksum_ += data;
+      if (mode_ == MODE_MESSAGE)          /* message data being recieved */
+      {
+        message_in[index_++] = data;
+        bytes_--;
+        if (bytes_ == 0)                 /* is message complete? if so, checksum */
+          mode_ = MODE_MSG_CHECKSUM;
+      }
+      else if (mode_ == MODE_FIRST_FF)
+      {
+        if (data == 0xff)
+        {
+          mode_++;
+          last_msg_timeout_time = c_time + SERIAL_MSG_TIMEOUT;
+        }
+        else if (hardware_.time() - c_time > (SYNC_SECONDS * 1000))
+        {
+          /* We have been stuck in spinOnce too long, return error */
+          configured_ = false;
+          return SPIN_TIMEOUT;
+        }
+      }
+      else if (mode_ == MODE_PROTOCOL_VER)
+      {
+        if (data == PROTOCOL_VER)
+        {
+          mode_++;
+        }
+        else
+        {
+          mode_ = MODE_FIRST_FF;
+          if (configured_ == false)
+            requestSyncTime();  /* send a msg back showing our protocol version */
+        }
+      }
+      else if (mode_ == MODE_SIZE_L)      /* bottom half of message size */
+      {
+        bytes_ = data;
+        index_ = 0;
+        mode_++;
+        checksum_ = data;               /* first byte for calculating size checksum */
+      }
+      else if (mode_ == MODE_SIZE_H)      /* top half of message size */
+      {
+        bytes_ += data << 8;
+        mode_++;
+      }
+      else if (mode_ == MODE_SIZE_CHECKSUM)
+      {
+        if ((checksum_ % 256) == 255)
+          mode_++;
+        else
+          mode_ = MODE_FIRST_FF;          /* Abandon the frame if the msg len is wrong */
+      }
+      else if (mode_ == MODE_TOPIC_L)     /* bottom half of topic id */
+      {
+        topic_ = data;
+        mode_++;
+        checksum_ = data;               /* first byte included in checksum */
+      }
+      else if (mode_ == MODE_TOPIC_H)     /* top half of topic id */
+      {
+        topic_ += data << 8;
+        mode_ = MODE_MESSAGE;
+        if (bytes_ == 0)
+          mode_ = MODE_MSG_CHECKSUM;
+      }
+      else if (mode_ == MODE_MSG_CHECKSUM)    /* do checksum */
+      {
+        mode_ = MODE_FIRST_FF;
+        if ((checksum_ % 256) == 255)
+        {
+          if (topic_ == TopicInfo::ID_PUBLISHER)
+          {
+            requestSyncTime();
+            negotiateTopics();
+            last_sync_time = c_time;
+            last_sync_receive_time = c_time;
+            return SPIN_ERR;
+          }
+          else if (topic_ == TopicInfo::ID_TIME)
+          {
+            syncTime(message_in);
+          }
+          else if (topic_ == TopicInfo::ID_PARAMETER_REQUEST)
+          {
+            req_param_resp.deserialize(message_in);
+            param_recieved = true;
+          }
+          else if (topic_ == TopicInfo::ID_TX_STOP)
+          {
+            configured_ = false;
+          }
+          else
+          {
+            if (subscribers[topic_ - 100])
+              subscribers[topic_ - 100]->callback(message_in);
+          }
+        }
+      }
+    }
+
+    /* occasionally sync time */
+    if (configured_ && ((c_time - last_sync_time) > (SYNC_SECONDS * 500)))
+    {
+      requestSyncTime();
+      last_sync_time = c_time;
+    }
+
+    return SPIN_OK;
+  }
+
+
+  /* Are we connected to the PC? */
+  virtual bool connected()
+  {
+    return configured_;
+  };
+
+  /********************************************************************
+   * Time functions
+   */
+
+  void requestSyncTime()
+  {
+    std_msgs::Time t;
+    publish(TopicInfo::ID_TIME, &t);
+    rt_time = hardware_.time();
+  }
+
+  void syncTime(uint8_t * data)
+  {
+    std_msgs::Time t;
+    uint32_t offset = hardware_.time() - rt_time;
+
+    t.deserialize(data);
+    t.data.sec += offset / 1000;
+    t.data.nsec += (offset % 1000) * 1000000UL;
+
+    this->setNow(t.data);
+    last_sync_receive_time = hardware_.time();
+  }
+
+  Time now()
+  {
+    uint32_t ms = hardware_.time();
+    Time current_time;
+    current_time.sec = ms / 1000 + sec_offset;
+    current_time.nsec = (ms % 1000) * 1000000UL + nsec_offset;
+    normalizeSecNSec(current_time.sec, current_time.nsec);
+    return current_time;
+  }
+
+  void setNow(Time & new_now)
+  {
+    uint32_t ms = hardware_.time();
+    sec_offset = new_now.sec - ms / 1000 - 1;
+    nsec_offset = new_now.nsec - (ms % 1000) * 1000000UL + 1000000000UL;
+    normalizeSecNSec(sec_offset, nsec_offset);
+  }
+
+  /********************************************************************
+   * Topic Management
+   */
+
+  /* Register a new publisher */
+  bool advertise(Publisher & p)
+  {
+    for (int i = 0; i < MAX_PUBLISHERS; i++)
+    {
+      if (publishers[i] == 0) // empty slot
+      {
+        publishers[i] = &p;
+        p.id_ = i + 100 + MAX_SUBSCRIBERS;
+        p.nh_ = this;
+        return true;
+      }
+    }
+    return false;
+  }
+
+  /* Register a new subscriber */
+  template<typename SubscriberT>
+  bool subscribe(SubscriberT& s)
+  {
+    for (int i = 0; i < MAX_SUBSCRIBERS; i++)
+    {
+      if (subscribers[i] == 0) // empty slot
+      {
+        subscribers[i] = static_cast<Subscriber_*>(&s);
+        s.id_ = i + 100;
+        return true;
+      }
+    }
+    return false;
+  }
+
+  /* Register a new Service Server */
+  template<typename MReq, typename MRes, typename ObjT>
+  bool advertiseService(ServiceServer<MReq, MRes, ObjT>& srv)
+  {
+    bool v = advertise(srv.pub);
+    for (int i = 0; i < MAX_SUBSCRIBERS; i++)
+    {
+      if (subscribers[i] == 0) // empty slot
+      {
+        subscribers[i] = static_cast<Subscriber_*>(&srv);
+        srv.id_ = i + 100;
+        return v;
+      }
+    }
+    return false;
+  }
+
+  /* Register a new Service Client */
+  template<typename MReq, typename MRes>
+  bool serviceClient(ServiceClient<MReq, MRes>& srv)
+  {
+    bool v = advertise(srv.pub);
+    for (int i = 0; i < MAX_SUBSCRIBERS; i++)
+    {
+      if (subscribers[i] == 0) // empty slot
+      {
+        subscribers[i] = static_cast<Subscriber_*>(&srv);
+        srv.id_ = i + 100;
+        return v;
+      }
+    }
+    return false;
+  }
+
+  void negotiateTopics()
+  {
+    rosserial_msgs::TopicInfo ti;
+    int i;
+    for (i = 0; i < MAX_PUBLISHERS; i++)
+    {
+      if (publishers[i] != 0) // non-empty slot
+      {
+        ti.topic_id = publishers[i]->id_;
+        ti.topic_name = (char *) publishers[i]->topic_;
+        ti.message_type = (char *) publishers[i]->msg_->getType();
+        ti.md5sum = (char *) publishers[i]->msg_->getMD5();
+        ti.buffer_size = OUTPUT_SIZE;
+        publish(publishers[i]->getEndpointType(), &ti);
+      }
+    }
+    for (i = 0; i < MAX_SUBSCRIBERS; i++)
+    {
+      if (subscribers[i] != 0) // non-empty slot
+      {
+        ti.topic_id = subscribers[i]->id_;
+        ti.topic_name = (char *) subscribers[i]->topic_;
+        ti.message_type = (char *) subscribers[i]->getMsgType();
+        ti.md5sum = (char *) subscribers[i]->getMsgMD5();
+        ti.buffer_size = INPUT_SIZE;
+        publish(subscribers[i]->getEndpointType(), &ti);
+      }
+    }
+    configured_ = true;
+  }
+
+  virtual int publish(int id, const Msg * msg)
+  {
+    if (id >= 100 && !configured_)
+      return 0;
+
+    /* serialize message */
+    int l = msg->serialize(message_out + 7);
+
+    /* setup the header */
+    message_out[0] = 0xff;
+    message_out[1] = PROTOCOL_VER;
+    message_out[2] = (uint8_t)((uint16_t)l & 255);
+    message_out[3] = (uint8_t)((uint16_t)l >> 8);
+    message_out[4] = 255 - ((message_out[2] + message_out[3]) % 256);
+    message_out[5] = (uint8_t)((int16_t)id & 255);
+    message_out[6] = (uint8_t)((int16_t)id >> 8);
+
+    /* calculate checksum */
+    int chk = 0;
+    for (int i = 5; i < l + 7; i++)
+      chk += message_out[i];
+    l += 7;
+    message_out[l++] = 255 - (chk % 256);
+
+    if (l <= OUTPUT_SIZE)
+    {
+      hardware_.write(message_out, l);
+      return l;
+    }
+    else
+    {
+      logerror("Message from device dropped: message larger than buffer.");
+      return -1;
+    }
+  }
+
+  /********************************************************************
+   * Logging
+   */
+
+private:
+  void log(char byte, const char * msg)
+  {
+    rosserial_msgs::Log l;
+    l.level = byte;
+    l.msg = (char*)msg;
+    publish(rosserial_msgs::TopicInfo::ID_LOG, &l);
+  }
+
+public:
+  void logdebug(const char* msg)
+  {
+    log(rosserial_msgs::Log::ROSDEBUG, msg);
+  }
+  void loginfo(const char * msg)
+  {
+    log(rosserial_msgs::Log::INFO, msg);
+  }
+  void logwarn(const char *msg)
+  {
+    log(rosserial_msgs::Log::WARN, msg);
+  }
+  void logerror(const char*msg)
+  {
+    log(rosserial_msgs::Log::ERROR, msg);
+  }
+  void logfatal(const char*msg)
+  {
+    log(rosserial_msgs::Log::FATAL, msg);
+  }
+
+  /********************************************************************
+   * Parameters
+   */
+
+private:
+  bool param_recieved;
+  rosserial_msgs::RequestParamResponse req_param_resp;
+
+  bool requestParam(const char * name, int time_out =  1000)
+  {
+    param_recieved = false;
+    rosserial_msgs::RequestParamRequest req;
+    req.name  = (char*)name;
+    publish(TopicInfo::ID_PARAMETER_REQUEST, &req);
+    uint32_t end_time = hardware_.time() + time_out;
+    while (!param_recieved)
+    {
+      spinOnce();
+      if (hardware_.time() > end_time)
+      {
+        logwarn("Failed to get param: timeout expired");
+        return false;
+      }
+    }
+    return true;
+  }
+
+public:
+  bool getParam(const char* name, int* param, int length = 1, int timeout = 1000)
+  {
+    if (requestParam(name, timeout))
+    {
+      if (length == req_param_resp.ints_length)
+      {
+        //copy it over
+        for (int i = 0; i < length; i++)
+          param[i] = req_param_resp.ints[i];
+        return true;
+      }
+      else
+      {
+        logwarn("Failed to get param: length mismatch");
+      }
+    }
+    return false;
+  }
+  bool getParam(const char* name, float* param, int length = 1, int timeout = 1000)
+  {
+    if (requestParam(name, timeout))
+    {
+      if (length == req_param_resp.floats_length)
+      {
+        //copy it over
+        for (int i = 0; i < length; i++)
+          param[i] = req_param_resp.floats[i];
+        return true;
+      }
+      else
+      {
+        logwarn("Failed to get param: length mismatch");
+      }
+    }
+    return false;
+  }
+  bool getParam(const char* name, char** param, int length = 1, int timeout = 1000)
+  {
+    if (requestParam(name, timeout))
+    {
+      if (length == req_param_resp.strings_length)
+      {
+        //copy it over
+        for (int i = 0; i < length; i++)
+          strcpy(param[i], req_param_resp.strings[i]);
+        return true;
+      }
+      else
+      {
+        logwarn("Failed to get param: length mismatch");
+      }
+    }
+    return false;
+  }
+  bool getParam(const char* name, bool* param, int length = 1, int timeout = 1000)
+  {
+    if (requestParam(name, timeout))
+    {
+      if (length == req_param_resp.ints_length)
+      {
+        //copy it over
+        for (int i = 0; i < length; i++)
+          param[i] = req_param_resp.ints[i];
+        return true;
+      }
+      else
+      {
+        logwarn("Failed to get param: length mismatch");
+      }
+    }
+    return false;
+  }
+};
+
+}
+
+#endif
diff --git a/otto_controller_source/Inc/ros/publisher.h b/otto_controller_source/Inc/ros/publisher.h
new file mode 100644 (file)
index 0000000..6fd3b7a
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2011, Willow Garage, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _ROS_PUBLISHER_H_
+#define _ROS_PUBLISHER_H_
+
+#include "rosserial_msgs/TopicInfo.h"
+#include "ros/node_handle.h"
+
+namespace ros
+{
+
+/* Generic Publisher */
+class Publisher
+{
+public:
+  Publisher(const char * topic_name, Msg * msg, int endpoint = rosserial_msgs::TopicInfo::ID_PUBLISHER) :
+    topic_(topic_name),
+    msg_(msg),
+    endpoint_(endpoint) {};
+
+  int publish(const Msg * msg)
+  {
+    return nh_->publish(id_, msg);
+  };
+  int getEndpointType()
+  {
+    return endpoint_;
+  }
+
+  const char * topic_;
+  Msg *msg_;
+  // id_ and no_ are set by NodeHandle when we advertise
+  int id_;
+  NodeHandleBase_* nh_;
+
+private:
+  int endpoint_;
+};
+
+}
+
+#endif
diff --git a/otto_controller_source/Inc/ros/service_client.h b/otto_controller_source/Inc/ros/service_client.h
new file mode 100644 (file)
index 0000000..3494d96
--- /dev/null
@@ -0,0 +1,95 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2011, Willow Garage, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _ROS_SERVICE_CLIENT_H_
+#define _ROS_SERVICE_CLIENT_H_
+
+#include "rosserial_msgs/TopicInfo.h"
+
+#include "ros/publisher.h"
+#include "ros/subscriber.h"
+
+namespace ros
+{
+
+template<typename MReq , typename MRes>
+class ServiceClient : public Subscriber_
+{
+public:
+  ServiceClient(const char* topic_name) :
+    pub(topic_name, &req, rosserial_msgs::TopicInfo::ID_SERVICE_CLIENT + rosserial_msgs::TopicInfo::ID_PUBLISHER)
+  {
+    this->topic_ = topic_name;
+    this->waiting = true;
+  }
+
+  virtual void call(const MReq & request, MRes & response)
+  {
+    if (!pub.nh_->connected()) return;
+    ret = &response;
+    waiting = true;
+    pub.publish(&request);
+    while (waiting && pub.nh_->connected())
+      if (pub.nh_->spinOnce() < 0) break;
+  }
+
+  // these refer to the subscriber
+  virtual void callback(unsigned char *data)
+  {
+    ret->deserialize(data);
+    waiting = false;
+  }
+  virtual const char * getMsgType()
+  {
+    return this->resp.getType();
+  }
+  virtual const char * getMsgMD5()
+  {
+    return this->resp.getMD5();
+  }
+  virtual int getEndpointType()
+  {
+    return rosserial_msgs::TopicInfo::ID_SERVICE_CLIENT + rosserial_msgs::TopicInfo::ID_SUBSCRIBER;
+  }
+
+  MReq req;
+  MRes resp;
+  MRes * ret;
+  bool waiting;
+  Publisher pub;
+};
+
+}
+
+#endif
diff --git a/otto_controller_source/Inc/ros/service_server.h b/otto_controller_source/Inc/ros/service_server.h
new file mode 100644 (file)
index 0000000..459d66e
--- /dev/null
@@ -0,0 +1,130 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2011, Willow Garage, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef _ROS_SERVICE_SERVER_H_
+#define _ROS_SERVICE_SERVER_H_
+
+#include "rosserial_msgs/TopicInfo.h"
+
+#include "ros/publisher.h"
+#include "ros/subscriber.h"
+
+namespace ros
+{
+
+template<typename MReq , typename MRes, typename ObjT = void>
+class ServiceServer : public Subscriber_
+{
+public:
+  typedef void(ObjT::*CallbackT)(const MReq&,  MRes&);
+
+  ServiceServer(const char* topic_name, CallbackT cb, ObjT* obj) :
+    pub(topic_name, &resp, rosserial_msgs::TopicInfo::ID_SERVICE_SERVER + rosserial_msgs::TopicInfo::ID_PUBLISHER),
+    obj_(obj)
+  {
+    this->topic_ = topic_name;
+    this->cb_ = cb;
+  }
+
+  // these refer to the subscriber
+  virtual void callback(unsigned char *data)
+  {
+    req.deserialize(data);
+    (obj_->*cb_)(req, resp);
+    pub.publish(&resp);
+  }
+  virtual const char * getMsgType()
+  {
+    return this->req.getType();
+  }
+  virtual const char * getMsgMD5()
+  {
+    return this->req.getMD5();
+  }
+  virtual int getEndpointType()
+  {
+    return rosserial_msgs::TopicInfo::ID_SERVICE_SERVER + rosserial_msgs::TopicInfo::ID_SUBSCRIBER;
+  }
+
+  MReq req;
+  MRes resp;
+  Publisher pub;
+private:
+  CallbackT cb_;
+  ObjT* obj_;
+};
+
+template<typename MReq , typename MRes>
+class ServiceServer<MReq, MRes, void> : public Subscriber_
+{
+public:
+  typedef void(*CallbackT)(const MReq&,  MRes&);
+
+  ServiceServer(const char* topic_name, CallbackT cb) :
+    pub(topic_name, &resp, rosserial_msgs::TopicInfo::ID_SERVICE_SERVER + rosserial_msgs::TopicInfo::ID_PUBLISHER)
+  {
+    this->topic_ = topic_name;
+    this->cb_ = cb;
+  }
+
+  // these refer to the subscriber
+  virtual void callback(unsigned char *data)
+  {
+    req.deserialize(data);
+    cb_(req, resp);
+    pub.publish(&resp);
+  }
+  virtual const char * getMsgType()
+  {
+    return this->req.getType();
+  }
+  virtual const char * getMsgMD5()
+  {
+    return this->req.getMD5();
+  }
+  virtual int getEndpointType()
+  {
+    return rosserial_msgs::TopicInfo::ID_SERVICE_SERVER + rosserial_msgs::TopicInfo::ID_SUBSCRIBER;
+  }
+
+  MReq req;
+  MRes resp;
+  Publisher pub;
+private:
+  CallbackT cb_;
+};
+
+}
+
+#endif
diff --git a/otto_controller_source/Inc/ros/subscriber.h b/otto_controller_source/Inc/ros/subscriber.h
new file mode 100644 (file)
index 0000000..d420bba
--- /dev/null
@@ -0,0 +1,140 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2011, Willow Garage, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ROS_SUBSCRIBER_H_
+#define ROS_SUBSCRIBER_H_
+
+#include "rosserial_msgs/TopicInfo.h"
+
+namespace ros
+{
+
+/* Base class for objects subscribers. */
+class Subscriber_
+{
+public:
+  virtual void callback(unsigned char *data) = 0;
+  virtual int getEndpointType() = 0;
+
+  // id_ is set by NodeHandle when we advertise
+  int id_;
+
+  virtual const char * getMsgType() = 0;
+  virtual const char * getMsgMD5() = 0;
+  const char * topic_;
+};
+
+/* Bound function subscriber. */
+template<typename MsgT, typename ObjT = void>
+class Subscriber: public Subscriber_
+{
+public:
+  typedef void(ObjT::*CallbackT)(const MsgT&);
+  MsgT msg;
+
+  Subscriber(const char * topic_name, CallbackT cb, ObjT* obj, int endpoint = rosserial_msgs::TopicInfo::ID_SUBSCRIBER) :
+    cb_(cb),
+    obj_(obj),
+    endpoint_(endpoint)
+  {
+    topic_ = topic_name;
+  };
+
+  virtual void callback(unsigned char* data)
+  {
+    msg.deserialize(data);
+    (obj_->*cb_)(msg);
+  }
+
+  virtual const char * getMsgType()
+  {
+    return this->msg.getType();
+  }
+  virtual const char * getMsgMD5()
+  {
+    return this->msg.getMD5();
+  }
+  virtual int getEndpointType()
+  {
+    return endpoint_;
+  }
+
+private:
+  CallbackT cb_;
+  ObjT* obj_;
+  int endpoint_;
+};
+
+/* Standalone function subscriber. */
+template<typename MsgT>
+class Subscriber<MsgT, void>: public Subscriber_
+{
+public:
+  typedef void(*CallbackT)(const MsgT&);
+  MsgT msg;
+
+  Subscriber(const char * topic_name, CallbackT cb, int endpoint = rosserial_msgs::TopicInfo::ID_SUBSCRIBER) :
+    cb_(cb),
+    endpoint_(endpoint)
+  {
+    topic_ = topic_name;
+  };
+
+  virtual void callback(unsigned char* data)
+  {
+    msg.deserialize(data);
+    this->cb_(msg);
+  }
+
+  virtual const char * getMsgType()
+  {
+    return this->msg.getType();
+  }
+  virtual const char * getMsgMD5()
+  {
+    return this->msg.getMD5();
+  }
+  virtual int getEndpointType()
+  {
+    return endpoint_;
+  }
+
+private:
+  CallbackT cb_;
+  int endpoint_;
+};
+
+}
+
+#endif
diff --git a/otto_controller_source/Inc/ros/time.h b/otto_controller_source/Inc/ros/time.h
new file mode 100644 (file)
index 0000000..441d952
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2011, Willow Garage, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ROS_TIME_H_
+#define ROS_TIME_H_
+
+#include "ros/duration.h"
+#include <math.h>
+#include <stdint.h>
+
+namespace ros
+{
+void normalizeSecNSec(uint32_t &sec, uint32_t &nsec);
+
+class Time
+{
+public:
+  uint32_t sec, nsec;
+
+  Time() : sec(0), nsec(0) {}
+  Time(uint32_t _sec, uint32_t _nsec) : sec(_sec), nsec(_nsec)
+  {
+    normalizeSecNSec(sec, nsec);
+  }
+
+  double toSec() const
+  {
+    return (double)sec + 1e-9 * (double)nsec;
+  };
+  void fromSec(double t)
+  {
+    sec = (uint32_t) floor(t);
+    nsec = (uint32_t) round((t - sec) * 1e9);
+  };
+
+  uint32_t toNsec()
+  {
+    return (uint32_t)sec * 1000000000ull + (uint32_t)nsec;
+  };
+  Time& fromNSec(int32_t t);
+
+  Time& operator +=(const Duration &rhs);
+  Time& operator -=(const Duration &rhs);
+
+  static Time now();
+  static void setNow(Time & new_now);
+};
+
+}
+
+#endif
diff --git a/otto_controller_source/Inc/roscpp/Empty.h b/otto_controller_source/Inc/roscpp/Empty.h
new file mode 100644 (file)
index 0000000..df021b7
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef _ROS_SERVICE_Empty_h
+#define _ROS_SERVICE_Empty_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace roscpp
+{
+
+static const char EMPTY[] = "roscpp/Empty";
+
+  class EmptyRequest : public ros::Msg
+  {
+    public:
+
+    EmptyRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return EMPTY; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class EmptyResponse : public ros::Msg
+  {
+    public:
+
+    EmptyResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return EMPTY; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class Empty {
+    public:
+    typedef EmptyRequest Request;
+    typedef EmptyResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/roscpp/GetLoggers.h b/otto_controller_source/Inc/roscpp/GetLoggers.h
new file mode 100644 (file)
index 0000000..35f67fb
--- /dev/null
@@ -0,0 +1,96 @@
+#ifndef _ROS_SERVICE_GetLoggers_h
+#define _ROS_SERVICE_GetLoggers_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "roscpp/Logger.h"
+
+namespace roscpp
+{
+
+static const char GETLOGGERS[] = "roscpp/GetLoggers";
+
+  class GetLoggersRequest : public ros::Msg
+  {
+    public:
+
+    GetLoggersRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return GETLOGGERS; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class GetLoggersResponse : public ros::Msg
+  {
+    public:
+      uint32_t loggers_length;
+      typedef roscpp::Logger _loggers_type;
+      _loggers_type st_loggers;
+      _loggers_type * loggers;
+
+    GetLoggersResponse():
+      loggers_length(0), loggers(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->loggers_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->loggers_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->loggers_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->loggers_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->loggers_length);
+      for( uint32_t i = 0; i < loggers_length; i++){
+      offset += this->loggers[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t loggers_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      loggers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      loggers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      loggers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->loggers_length);
+      if(loggers_lengthT > loggers_length)
+        this->loggers = (roscpp::Logger*)realloc(this->loggers, loggers_lengthT * sizeof(roscpp::Logger));
+      loggers_length = loggers_lengthT;
+      for( uint32_t i = 0; i < loggers_length; i++){
+      offset += this->st_loggers.deserialize(inbuffer + offset);
+        memcpy( &(this->loggers[i]), &(this->st_loggers), sizeof(roscpp::Logger));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return GETLOGGERS; };
+    const char * getMD5(){ return "32e97e85527d4678a8f9279894bb64b0"; };
+
+  };
+
+  class GetLoggers {
+    public:
+    typedef GetLoggersRequest Request;
+    typedef GetLoggersResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/roscpp/Logger.h b/otto_controller_source/Inc/roscpp/Logger.h
new file mode 100644 (file)
index 0000000..64c68f3
--- /dev/null
@@ -0,0 +1,72 @@
+#ifndef _ROS_roscpp_Logger_h
+#define _ROS_roscpp_Logger_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace roscpp
+{
+
+  class Logger : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef const char* _level_type;
+      _level_type level;
+
+    Logger():
+      name(""),
+      level("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      uint32_t length_level = strlen(this->level);
+      varToArr(outbuffer + offset, length_level);
+      offset += 4;
+      memcpy(outbuffer + offset, this->level, length_level);
+      offset += length_level;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      uint32_t length_level;
+      arrToVar(length_level, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_level; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_level-1]=0;
+      this->level = (char *)(inbuffer + offset-1);
+      offset += length_level;
+     return offset;
+    }
+
+    const char * getType(){ return "roscpp/Logger"; };
+    const char * getMD5(){ return "a6069a2ff40db7bd32143dd66e1f408e"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/roscpp/SetLoggerLevel.h b/otto_controller_source/Inc/roscpp/SetLoggerLevel.h
new file mode 100644 (file)
index 0000000..64f2a24
--- /dev/null
@@ -0,0 +1,104 @@
+#ifndef _ROS_SERVICE_SetLoggerLevel_h
+#define _ROS_SERVICE_SetLoggerLevel_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace roscpp
+{
+
+static const char SETLOGGERLEVEL[] = "roscpp/SetLoggerLevel";
+
+  class SetLoggerLevelRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _logger_type;
+      _logger_type logger;
+      typedef const char* _level_type;
+      _level_type level;
+
+    SetLoggerLevelRequest():
+      logger(""),
+      level("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_logger = strlen(this->logger);
+      varToArr(outbuffer + offset, length_logger);
+      offset += 4;
+      memcpy(outbuffer + offset, this->logger, length_logger);
+      offset += length_logger;
+      uint32_t length_level = strlen(this->level);
+      varToArr(outbuffer + offset, length_level);
+      offset += 4;
+      memcpy(outbuffer + offset, this->level, length_level);
+      offset += length_level;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_logger;
+      arrToVar(length_logger, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_logger; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_logger-1]=0;
+      this->logger = (char *)(inbuffer + offset-1);
+      offset += length_logger;
+      uint32_t length_level;
+      arrToVar(length_level, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_level; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_level-1]=0;
+      this->level = (char *)(inbuffer + offset-1);
+      offset += length_level;
+     return offset;
+    }
+
+    const char * getType(){ return SETLOGGERLEVEL; };
+    const char * getMD5(){ return "51da076440d78ca1684d36c868df61ea"; };
+
+  };
+
+  class SetLoggerLevelResponse : public ros::Msg
+  {
+    public:
+
+    SetLoggerLevelResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return SETLOGGERLEVEL; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class SetLoggerLevel {
+    public:
+    typedef SetLoggerLevelRequest Request;
+    typedef SetLoggerLevelResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/roscpp_tutorials/TwoInts.h b/otto_controller_source/Inc/roscpp_tutorials/TwoInts.h
new file mode 100644 (file)
index 0000000..03510bb
--- /dev/null
@@ -0,0 +1,166 @@
+#ifndef _ROS_SERVICE_TwoInts_h
+#define _ROS_SERVICE_TwoInts_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace roscpp_tutorials
+{
+
+static const char TWOINTS[] = "roscpp_tutorials/TwoInts";
+
+  class TwoIntsRequest : public ros::Msg
+  {
+    public:
+      typedef int64_t _a_type;
+      _a_type a;
+      typedef int64_t _b_type;
+      _b_type b;
+
+    TwoIntsRequest():
+      a(0),
+      b(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_a;
+      u_a.real = this->a;
+      *(outbuffer + offset + 0) = (u_a.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_a.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_a.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_a.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_a.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_a.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_a.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_a.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->a);
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_b;
+      u_b.real = this->b;
+      *(outbuffer + offset + 0) = (u_b.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_b.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_b.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_b.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_b.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_b.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_b.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_b.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->b);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_a;
+      u_a.base = 0;
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->a = u_a.real;
+      offset += sizeof(this->a);
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_b;
+      u_b.base = 0;
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->b = u_b.real;
+      offset += sizeof(this->b);
+     return offset;
+    }
+
+    const char * getType(){ return TWOINTS; };
+    const char * getMD5(){ return "36d09b846be0b371c5f190354dd3153e"; };
+
+  };
+
+  class TwoIntsResponse : public ros::Msg
+  {
+    public:
+      typedef int64_t _sum_type;
+      _sum_type sum;
+
+    TwoIntsResponse():
+      sum(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_sum;
+      u_sum.real = this->sum;
+      *(outbuffer + offset + 0) = (u_sum.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_sum.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_sum.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_sum.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_sum.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_sum.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_sum.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_sum.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->sum);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_sum;
+      u_sum.base = 0;
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->sum = u_sum.real;
+      offset += sizeof(this->sum);
+     return offset;
+    }
+
+    const char * getType(){ return TWOINTS; };
+    const char * getMD5(){ return "b88405221c77b1878a3cbbfff53428d7"; };
+
+  };
+
+  class TwoInts {
+    public:
+    typedef TwoIntsRequest Request;
+    typedef TwoIntsResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/rosgraph_msgs/Clock.h b/otto_controller_source/Inc/rosgraph_msgs/Clock.h
new file mode 100644 (file)
index 0000000..febd870
--- /dev/null
@@ -0,0 +1,62 @@
+#ifndef _ROS_rosgraph_msgs_Clock_h
+#define _ROS_rosgraph_msgs_Clock_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/time.h"
+
+namespace rosgraph_msgs
+{
+
+  class Clock : public ros::Msg
+  {
+    public:
+      typedef ros::Time _clock_type;
+      _clock_type clock;
+
+    Clock():
+      clock()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->clock.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->clock.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->clock.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->clock.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->clock.sec);
+      *(outbuffer + offset + 0) = (this->clock.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->clock.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->clock.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->clock.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->clock.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->clock.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->clock.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->clock.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->clock.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->clock.sec);
+      this->clock.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->clock.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->clock.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->clock.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->clock.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return "rosgraph_msgs/Clock"; };
+    const char * getMD5(){ return "a9c97c1d230cfc112e270351a944ee47"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/rosgraph_msgs/Log.h b/otto_controller_source/Inc/rosgraph_msgs/Log.h
new file mode 100644 (file)
index 0000000..eea68a1
--- /dev/null
@@ -0,0 +1,185 @@
+#ifndef _ROS_rosgraph_msgs_Log_h
+#define _ROS_rosgraph_msgs_Log_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace rosgraph_msgs
+{
+
+  class Log : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef int8_t _level_type;
+      _level_type level;
+      typedef const char* _name_type;
+      _name_type name;
+      typedef const char* _msg_type;
+      _msg_type msg;
+      typedef const char* _file_type;
+      _file_type file;
+      typedef const char* _function_type;
+      _function_type function;
+      typedef uint32_t _line_type;
+      _line_type line;
+      uint32_t topics_length;
+      typedef char* _topics_type;
+      _topics_type st_topics;
+      _topics_type * topics;
+      enum { DEBUG = 1  };
+      enum { INFO = 2   };
+      enum { WARN = 4   };
+      enum { ERROR = 8  };
+      enum { FATAL = 16  };
+
+    Log():
+      header(),
+      level(0),
+      name(""),
+      msg(""),
+      file(""),
+      function(""),
+      line(0),
+      topics_length(0), topics(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_level;
+      u_level.real = this->level;
+      *(outbuffer + offset + 0) = (u_level.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->level);
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      uint32_t length_msg = strlen(this->msg);
+      varToArr(outbuffer + offset, length_msg);
+      offset += 4;
+      memcpy(outbuffer + offset, this->msg, length_msg);
+      offset += length_msg;
+      uint32_t length_file = strlen(this->file);
+      varToArr(outbuffer + offset, length_file);
+      offset += 4;
+      memcpy(outbuffer + offset, this->file, length_file);
+      offset += length_file;
+      uint32_t length_function = strlen(this->function);
+      varToArr(outbuffer + offset, length_function);
+      offset += 4;
+      memcpy(outbuffer + offset, this->function, length_function);
+      offset += length_function;
+      *(outbuffer + offset + 0) = (this->line >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->line >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->line >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->line >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->line);
+      *(outbuffer + offset + 0) = (this->topics_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->topics_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->topics_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->topics_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->topics_length);
+      for( uint32_t i = 0; i < topics_length; i++){
+      uint32_t length_topicsi = strlen(this->topics[i]);
+      varToArr(outbuffer + offset, length_topicsi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->topics[i], length_topicsi);
+      offset += length_topicsi;
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_level;
+      u_level.base = 0;
+      u_level.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->level = u_level.real;
+      offset += sizeof(this->level);
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      uint32_t length_msg;
+      arrToVar(length_msg, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_msg; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_msg-1]=0;
+      this->msg = (char *)(inbuffer + offset-1);
+      offset += length_msg;
+      uint32_t length_file;
+      arrToVar(length_file, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_file; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_file-1]=0;
+      this->file = (char *)(inbuffer + offset-1);
+      offset += length_file;
+      uint32_t length_function;
+      arrToVar(length_function, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_function; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_function-1]=0;
+      this->function = (char *)(inbuffer + offset-1);
+      offset += length_function;
+      this->line =  ((uint32_t) (*(inbuffer + offset)));
+      this->line |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->line |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->line |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->line);
+      uint32_t topics_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->topics_length);
+      if(topics_lengthT > topics_length)
+        this->topics = (char**)realloc(this->topics, topics_lengthT * sizeof(char*));
+      topics_length = topics_lengthT;
+      for( uint32_t i = 0; i < topics_length; i++){
+      uint32_t length_st_topics;
+      arrToVar(length_st_topics, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_topics; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_topics-1]=0;
+      this->st_topics = (char *)(inbuffer + offset-1);
+      offset += length_st_topics;
+        memcpy( &(this->topics[i]), &(this->st_topics), sizeof(char*));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "rosgraph_msgs/Log"; };
+    const char * getMD5(){ return "acffd30cd6b6de30f120938c17c593fb"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/rosgraph_msgs/TopicStatistics.h b/otto_controller_source/Inc/rosgraph_msgs/TopicStatistics.h
new file mode 100644 (file)
index 0000000..a11f784
--- /dev/null
@@ -0,0 +1,347 @@
+#ifndef _ROS_rosgraph_msgs_TopicStatistics_h
+#define _ROS_rosgraph_msgs_TopicStatistics_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/time.h"
+#include "ros/duration.h"
+
+namespace rosgraph_msgs
+{
+
+  class TopicStatistics : public ros::Msg
+  {
+    public:
+      typedef const char* _topic_type;
+      _topic_type topic;
+      typedef const char* _node_pub_type;
+      _node_pub_type node_pub;
+      typedef const char* _node_sub_type;
+      _node_sub_type node_sub;
+      typedef ros::Time _window_start_type;
+      _window_start_type window_start;
+      typedef ros::Time _window_stop_type;
+      _window_stop_type window_stop;
+      typedef int32_t _delivered_msgs_type;
+      _delivered_msgs_type delivered_msgs;
+      typedef int32_t _dropped_msgs_type;
+      _dropped_msgs_type dropped_msgs;
+      typedef int32_t _traffic_type;
+      _traffic_type traffic;
+      typedef ros::Duration _period_mean_type;
+      _period_mean_type period_mean;
+      typedef ros::Duration _period_stddev_type;
+      _period_stddev_type period_stddev;
+      typedef ros::Duration _period_max_type;
+      _period_max_type period_max;
+      typedef ros::Duration _stamp_age_mean_type;
+      _stamp_age_mean_type stamp_age_mean;
+      typedef ros::Duration _stamp_age_stddev_type;
+      _stamp_age_stddev_type stamp_age_stddev;
+      typedef ros::Duration _stamp_age_max_type;
+      _stamp_age_max_type stamp_age_max;
+
+    TopicStatistics():
+      topic(""),
+      node_pub(""),
+      node_sub(""),
+      window_start(),
+      window_stop(),
+      delivered_msgs(0),
+      dropped_msgs(0),
+      traffic(0),
+      period_mean(),
+      period_stddev(),
+      period_max(),
+      stamp_age_mean(),
+      stamp_age_stddev(),
+      stamp_age_max()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_topic = strlen(this->topic);
+      varToArr(outbuffer + offset, length_topic);
+      offset += 4;
+      memcpy(outbuffer + offset, this->topic, length_topic);
+      offset += length_topic;
+      uint32_t length_node_pub = strlen(this->node_pub);
+      varToArr(outbuffer + offset, length_node_pub);
+      offset += 4;
+      memcpy(outbuffer + offset, this->node_pub, length_node_pub);
+      offset += length_node_pub;
+      uint32_t length_node_sub = strlen(this->node_sub);
+      varToArr(outbuffer + offset, length_node_sub);
+      offset += 4;
+      memcpy(outbuffer + offset, this->node_sub, length_node_sub);
+      offset += length_node_sub;
+      *(outbuffer + offset + 0) = (this->window_start.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->window_start.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->window_start.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->window_start.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->window_start.sec);
+      *(outbuffer + offset + 0) = (this->window_start.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->window_start.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->window_start.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->window_start.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->window_start.nsec);
+      *(outbuffer + offset + 0) = (this->window_stop.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->window_stop.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->window_stop.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->window_stop.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->window_stop.sec);
+      *(outbuffer + offset + 0) = (this->window_stop.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->window_stop.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->window_stop.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->window_stop.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->window_stop.nsec);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_delivered_msgs;
+      u_delivered_msgs.real = this->delivered_msgs;
+      *(outbuffer + offset + 0) = (u_delivered_msgs.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_delivered_msgs.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_delivered_msgs.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_delivered_msgs.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->delivered_msgs);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_dropped_msgs;
+      u_dropped_msgs.real = this->dropped_msgs;
+      *(outbuffer + offset + 0) = (u_dropped_msgs.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_dropped_msgs.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_dropped_msgs.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_dropped_msgs.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->dropped_msgs);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_traffic;
+      u_traffic.real = this->traffic;
+      *(outbuffer + offset + 0) = (u_traffic.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_traffic.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_traffic.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_traffic.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->traffic);
+      *(outbuffer + offset + 0) = (this->period_mean.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->period_mean.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->period_mean.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->period_mean.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->period_mean.sec);
+      *(outbuffer + offset + 0) = (this->period_mean.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->period_mean.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->period_mean.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->period_mean.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->period_mean.nsec);
+      *(outbuffer + offset + 0) = (this->period_stddev.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->period_stddev.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->period_stddev.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->period_stddev.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->period_stddev.sec);
+      *(outbuffer + offset + 0) = (this->period_stddev.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->period_stddev.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->period_stddev.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->period_stddev.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->period_stddev.nsec);
+      *(outbuffer + offset + 0) = (this->period_max.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->period_max.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->period_max.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->period_max.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->period_max.sec);
+      *(outbuffer + offset + 0) = (this->period_max.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->period_max.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->period_max.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->period_max.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->period_max.nsec);
+      *(outbuffer + offset + 0) = (this->stamp_age_mean.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stamp_age_mean.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stamp_age_mean.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stamp_age_mean.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stamp_age_mean.sec);
+      *(outbuffer + offset + 0) = (this->stamp_age_mean.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stamp_age_mean.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stamp_age_mean.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stamp_age_mean.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stamp_age_mean.nsec);
+      *(outbuffer + offset + 0) = (this->stamp_age_stddev.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stamp_age_stddev.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stamp_age_stddev.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stamp_age_stddev.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stamp_age_stddev.sec);
+      *(outbuffer + offset + 0) = (this->stamp_age_stddev.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stamp_age_stddev.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stamp_age_stddev.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stamp_age_stddev.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stamp_age_stddev.nsec);
+      *(outbuffer + offset + 0) = (this->stamp_age_max.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stamp_age_max.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stamp_age_max.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stamp_age_max.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stamp_age_max.sec);
+      *(outbuffer + offset + 0) = (this->stamp_age_max.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stamp_age_max.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stamp_age_max.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stamp_age_max.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stamp_age_max.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_topic;
+      arrToVar(length_topic, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_topic; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_topic-1]=0;
+      this->topic = (char *)(inbuffer + offset-1);
+      offset += length_topic;
+      uint32_t length_node_pub;
+      arrToVar(length_node_pub, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_node_pub; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_node_pub-1]=0;
+      this->node_pub = (char *)(inbuffer + offset-1);
+      offset += length_node_pub;
+      uint32_t length_node_sub;
+      arrToVar(length_node_sub, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_node_sub; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_node_sub-1]=0;
+      this->node_sub = (char *)(inbuffer + offset-1);
+      offset += length_node_sub;
+      this->window_start.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->window_start.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->window_start.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->window_start.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->window_start.sec);
+      this->window_start.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->window_start.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->window_start.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->window_start.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->window_start.nsec);
+      this->window_stop.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->window_stop.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->window_stop.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->window_stop.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->window_stop.sec);
+      this->window_stop.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->window_stop.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->window_stop.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->window_stop.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->window_stop.nsec);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_delivered_msgs;
+      u_delivered_msgs.base = 0;
+      u_delivered_msgs.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_delivered_msgs.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_delivered_msgs.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_delivered_msgs.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->delivered_msgs = u_delivered_msgs.real;
+      offset += sizeof(this->delivered_msgs);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_dropped_msgs;
+      u_dropped_msgs.base = 0;
+      u_dropped_msgs.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_dropped_msgs.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_dropped_msgs.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_dropped_msgs.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->dropped_msgs = u_dropped_msgs.real;
+      offset += sizeof(this->dropped_msgs);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_traffic;
+      u_traffic.base = 0;
+      u_traffic.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_traffic.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_traffic.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_traffic.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->traffic = u_traffic.real;
+      offset += sizeof(this->traffic);
+      this->period_mean.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->period_mean.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->period_mean.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->period_mean.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->period_mean.sec);
+      this->period_mean.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->period_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->period_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->period_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->period_mean.nsec);
+      this->period_stddev.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->period_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->period_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->period_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->period_stddev.sec);
+      this->period_stddev.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->period_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->period_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->period_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->period_stddev.nsec);
+      this->period_max.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->period_max.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->period_max.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->period_max.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->period_max.sec);
+      this->period_max.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->period_max.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->period_max.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->period_max.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->period_max.nsec);
+      this->stamp_age_mean.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->stamp_age_mean.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->stamp_age_mean.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->stamp_age_mean.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->stamp_age_mean.sec);
+      this->stamp_age_mean.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->stamp_age_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->stamp_age_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->stamp_age_mean.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->stamp_age_mean.nsec);
+      this->stamp_age_stddev.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->stamp_age_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->stamp_age_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->stamp_age_stddev.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->stamp_age_stddev.sec);
+      this->stamp_age_stddev.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->stamp_age_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->stamp_age_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->stamp_age_stddev.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->stamp_age_stddev.nsec);
+      this->stamp_age_max.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->stamp_age_max.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->stamp_age_max.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->stamp_age_max.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->stamp_age_max.sec);
+      this->stamp_age_max.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->stamp_age_max.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->stamp_age_max.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->stamp_age_max.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->stamp_age_max.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return "rosgraph_msgs/TopicStatistics"; };
+    const char * getMD5(){ return "10152ed868c5097a5e2e4a89d7daa710"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/rospy_tutorials/AddTwoInts.h b/otto_controller_source/Inc/rospy_tutorials/AddTwoInts.h
new file mode 100644 (file)
index 0000000..04dec98
--- /dev/null
@@ -0,0 +1,166 @@
+#ifndef _ROS_SERVICE_AddTwoInts_h
+#define _ROS_SERVICE_AddTwoInts_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace rospy_tutorials
+{
+
+static const char ADDTWOINTS[] = "rospy_tutorials/AddTwoInts";
+
+  class AddTwoIntsRequest : public ros::Msg
+  {
+    public:
+      typedef int64_t _a_type;
+      _a_type a;
+      typedef int64_t _b_type;
+      _b_type b;
+
+    AddTwoIntsRequest():
+      a(0),
+      b(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_a;
+      u_a.real = this->a;
+      *(outbuffer + offset + 0) = (u_a.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_a.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_a.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_a.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_a.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_a.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_a.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_a.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->a);
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_b;
+      u_b.real = this->b;
+      *(outbuffer + offset + 0) = (u_b.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_b.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_b.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_b.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_b.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_b.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_b.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_b.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->b);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_a;
+      u_a.base = 0;
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->a = u_a.real;
+      offset += sizeof(this->a);
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_b;
+      u_b.base = 0;
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_b.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->b = u_b.real;
+      offset += sizeof(this->b);
+     return offset;
+    }
+
+    const char * getType(){ return ADDTWOINTS; };
+    const char * getMD5(){ return "36d09b846be0b371c5f190354dd3153e"; };
+
+  };
+
+  class AddTwoIntsResponse : public ros::Msg
+  {
+    public:
+      typedef int64_t _sum_type;
+      _sum_type sum;
+
+    AddTwoIntsResponse():
+      sum(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_sum;
+      u_sum.real = this->sum;
+      *(outbuffer + offset + 0) = (u_sum.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_sum.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_sum.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_sum.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_sum.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_sum.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_sum.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_sum.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->sum);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_sum;
+      u_sum.base = 0;
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_sum.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->sum = u_sum.real;
+      offset += sizeof(this->sum);
+     return offset;
+    }
+
+    const char * getType(){ return ADDTWOINTS; };
+    const char * getMD5(){ return "b88405221c77b1878a3cbbfff53428d7"; };
+
+  };
+
+  class AddTwoInts {
+    public:
+    typedef AddTwoIntsRequest Request;
+    typedef AddTwoIntsResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/rospy_tutorials/BadTwoInts.h b/otto_controller_source/Inc/rospy_tutorials/BadTwoInts.h
new file mode 100644 (file)
index 0000000..0218f54
--- /dev/null
@@ -0,0 +1,150 @@
+#ifndef _ROS_SERVICE_BadTwoInts_h
+#define _ROS_SERVICE_BadTwoInts_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace rospy_tutorials
+{
+
+static const char BADTWOINTS[] = "rospy_tutorials/BadTwoInts";
+
+  class BadTwoIntsRequest : public ros::Msg
+  {
+    public:
+      typedef int64_t _a_type;
+      _a_type a;
+      typedef int32_t _b_type;
+      _b_type b;
+
+    BadTwoIntsRequest():
+      a(0),
+      b(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_a;
+      u_a.real = this->a;
+      *(outbuffer + offset + 0) = (u_a.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_a.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_a.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_a.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_a.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_a.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_a.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_a.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->a);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_b;
+      u_b.real = this->b;
+      *(outbuffer + offset + 0) = (u_b.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_b.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_b.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_b.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->b);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_a;
+      u_a.base = 0;
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_a.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->a = u_a.real;
+      offset += sizeof(this->a);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_b;
+      u_b.base = 0;
+      u_b.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_b.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_b.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_b.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->b = u_b.real;
+      offset += sizeof(this->b);
+     return offset;
+    }
+
+    const char * getType(){ return BADTWOINTS; };
+    const char * getMD5(){ return "29bb5c7dea8bf822f53e94b0ee5a3a56"; };
+
+  };
+
+  class BadTwoIntsResponse : public ros::Msg
+  {
+    public:
+      typedef int32_t _sum_type;
+      _sum_type sum;
+
+    BadTwoIntsResponse():
+      sum(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_sum;
+      u_sum.real = this->sum;
+      *(outbuffer + offset + 0) = (u_sum.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_sum.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_sum.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_sum.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->sum);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_sum;
+      u_sum.base = 0;
+      u_sum.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_sum.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_sum.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_sum.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->sum = u_sum.real;
+      offset += sizeof(this->sum);
+     return offset;
+    }
+
+    const char * getType(){ return BADTWOINTS; };
+    const char * getMD5(){ return "0ba699c25c9418c0366f3595c0c8e8ec"; };
+
+  };
+
+  class BadTwoInts {
+    public:
+    typedef BadTwoIntsRequest Request;
+    typedef BadTwoIntsResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/rospy_tutorials/Floats.h b/otto_controller_source/Inc/rospy_tutorials/Floats.h
new file mode 100644 (file)
index 0000000..37fe6dd
--- /dev/null
@@ -0,0 +1,82 @@
+#ifndef _ROS_rospy_tutorials_Floats_h
+#define _ROS_rospy_tutorials_Floats_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace rospy_tutorials
+{
+
+  class Floats : public ros::Msg
+  {
+    public:
+      uint32_t data_length;
+      typedef float _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    Floats():
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_datai;
+      u_datai.real = this->data[i];
+      *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (float*)realloc(this->data, data_lengthT * sizeof(float));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_st_data;
+      u_st_data.base = 0;
+      u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_data = u_st_data.real;
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(float));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "rospy_tutorials/Floats"; };
+    const char * getMD5(){ return "420cd38b6b071cd49f2970c3e2cee511"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/rospy_tutorials/HeaderString.h b/otto_controller_source/Inc/rospy_tutorials/HeaderString.h
new file mode 100644 (file)
index 0000000..052b747
--- /dev/null
@@ -0,0 +1,61 @@
+#ifndef _ROS_rospy_tutorials_HeaderString_h
+#define _ROS_rospy_tutorials_HeaderString_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace rospy_tutorials
+{
+
+  class HeaderString : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef const char* _data_type;
+      _data_type data;
+
+    HeaderString():
+      header(),
+      data("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      uint32_t length_data = strlen(this->data);
+      varToArr(outbuffer + offset, length_data);
+      offset += 4;
+      memcpy(outbuffer + offset, this->data, length_data);
+      offset += length_data;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t length_data;
+      arrToVar(length_data, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_data; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_data-1]=0;
+      this->data = (char *)(inbuffer + offset-1);
+      offset += length_data;
+     return offset;
+    }
+
+    const char * getType(){ return "rospy_tutorials/HeaderString"; };
+    const char * getMD5(){ return "c99a9440709e4d4a9716d55b8270d5e7"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/rosserial_msgs/Log.h b/otto_controller_source/Inc/rosserial_msgs/Log.h
new file mode 100644 (file)
index 0000000..a01f494
--- /dev/null
@@ -0,0 +1,67 @@
+#ifndef _ROS_rosserial_msgs_Log_h
+#define _ROS_rosserial_msgs_Log_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace rosserial_msgs
+{
+
+  class Log : public ros::Msg
+  {
+    public:
+      typedef uint8_t _level_type;
+      _level_type level;
+      typedef const char* _msg_type;
+      _msg_type msg;
+      enum { ROSDEBUG = 0 };
+      enum { INFO = 1 };
+      enum { WARN = 2 };
+      enum { ERROR = 3 };
+      enum { FATAL = 4 };
+
+    Log():
+      level(0),
+      msg("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->level >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->level);
+      uint32_t length_msg = strlen(this->msg);
+      varToArr(outbuffer + offset, length_msg);
+      offset += 4;
+      memcpy(outbuffer + offset, this->msg, length_msg);
+      offset += length_msg;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->level =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->level);
+      uint32_t length_msg;
+      arrToVar(length_msg, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_msg; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_msg-1]=0;
+      this->msg = (char *)(inbuffer + offset-1);
+      offset += length_msg;
+     return offset;
+    }
+
+    const char * getType(){ return "rosserial_msgs/Log"; };
+    const char * getMD5(){ return "11abd731c25933261cd6183bd12d6295"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/rosserial_msgs/RequestMessageInfo.h b/otto_controller_source/Inc/rosserial_msgs/RequestMessageInfo.h
new file mode 100644 (file)
index 0000000..3466ddc
--- /dev/null
@@ -0,0 +1,121 @@
+#ifndef _ROS_SERVICE_RequestMessageInfo_h
+#define _ROS_SERVICE_RequestMessageInfo_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace rosserial_msgs
+{
+
+static const char REQUESTMESSAGEINFO[] = "rosserial_msgs/RequestMessageInfo";
+
+  class RequestMessageInfoRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _type_type;
+      _type_type type;
+
+    RequestMessageInfoRequest():
+      type("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_type = strlen(this->type);
+      varToArr(outbuffer + offset, length_type);
+      offset += 4;
+      memcpy(outbuffer + offset, this->type, length_type);
+      offset += length_type;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_type;
+      arrToVar(length_type, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_type; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_type-1]=0;
+      this->type = (char *)(inbuffer + offset-1);
+      offset += length_type;
+     return offset;
+    }
+
+    const char * getType(){ return REQUESTMESSAGEINFO; };
+    const char * getMD5(){ return "dc67331de85cf97091b7d45e5c64ab75"; };
+
+  };
+
+  class RequestMessageInfoResponse : public ros::Msg
+  {
+    public:
+      typedef const char* _md5_type;
+      _md5_type md5;
+      typedef const char* _definition_type;
+      _definition_type definition;
+
+    RequestMessageInfoResponse():
+      md5(""),
+      definition("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_md5 = strlen(this->md5);
+      varToArr(outbuffer + offset, length_md5);
+      offset += 4;
+      memcpy(outbuffer + offset, this->md5, length_md5);
+      offset += length_md5;
+      uint32_t length_definition = strlen(this->definition);
+      varToArr(outbuffer + offset, length_definition);
+      offset += 4;
+      memcpy(outbuffer + offset, this->definition, length_definition);
+      offset += length_definition;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_md5;
+      arrToVar(length_md5, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_md5; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_md5-1]=0;
+      this->md5 = (char *)(inbuffer + offset-1);
+      offset += length_md5;
+      uint32_t length_definition;
+      arrToVar(length_definition, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_definition; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_definition-1]=0;
+      this->definition = (char *)(inbuffer + offset-1);
+      offset += length_definition;
+     return offset;
+    }
+
+    const char * getType(){ return REQUESTMESSAGEINFO; };
+    const char * getMD5(){ return "fe452186a069bed40f09b8628fe5eac8"; };
+
+  };
+
+  class RequestMessageInfo {
+    public:
+    typedef RequestMessageInfoRequest Request;
+    typedef RequestMessageInfoResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/rosserial_msgs/RequestParam.h b/otto_controller_source/Inc/rosserial_msgs/RequestParam.h
new file mode 100644 (file)
index 0000000..007653c
--- /dev/null
@@ -0,0 +1,212 @@
+#ifndef _ROS_SERVICE_RequestParam_h
+#define _ROS_SERVICE_RequestParam_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace rosserial_msgs
+{
+
+static const char REQUESTPARAM[] = "rosserial_msgs/RequestParam";
+
+  class RequestParamRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+
+    RequestParamRequest():
+      name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+     return offset;
+    }
+
+    const char * getType(){ return REQUESTPARAM; };
+    const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; };
+
+  };
+
+  class RequestParamResponse : public ros::Msg
+  {
+    public:
+      uint32_t ints_length;
+      typedef int32_t _ints_type;
+      _ints_type st_ints;
+      _ints_type * ints;
+      uint32_t floats_length;
+      typedef float _floats_type;
+      _floats_type st_floats;
+      _floats_type * floats;
+      uint32_t strings_length;
+      typedef char* _strings_type;
+      _strings_type st_strings;
+      _strings_type * strings;
+
+    RequestParamResponse():
+      ints_length(0), ints(NULL),
+      floats_length(0), floats(NULL),
+      strings_length(0), strings(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->ints_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->ints_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->ints_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->ints_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->ints_length);
+      for( uint32_t i = 0; i < ints_length; i++){
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_intsi;
+      u_intsi.real = this->ints[i];
+      *(outbuffer + offset + 0) = (u_intsi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_intsi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_intsi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_intsi.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->ints[i]);
+      }
+      *(outbuffer + offset + 0) = (this->floats_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->floats_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->floats_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->floats_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->floats_length);
+      for( uint32_t i = 0; i < floats_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_floatsi;
+      u_floatsi.real = this->floats[i];
+      *(outbuffer + offset + 0) = (u_floatsi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_floatsi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_floatsi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_floatsi.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->floats[i]);
+      }
+      *(outbuffer + offset + 0) = (this->strings_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->strings_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->strings_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->strings_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->strings_length);
+      for( uint32_t i = 0; i < strings_length; i++){
+      uint32_t length_stringsi = strlen(this->strings[i]);
+      varToArr(outbuffer + offset, length_stringsi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->strings[i], length_stringsi);
+      offset += length_stringsi;
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t ints_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      ints_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->ints_length);
+      if(ints_lengthT > ints_length)
+        this->ints = (int32_t*)realloc(this->ints, ints_lengthT * sizeof(int32_t));
+      ints_length = ints_lengthT;
+      for( uint32_t i = 0; i < ints_length; i++){
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_st_ints;
+      u_st_ints.base = 0;
+      u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_ints.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_ints = u_st_ints.real;
+      offset += sizeof(this->st_ints);
+        memcpy( &(this->ints[i]), &(this->st_ints), sizeof(int32_t));
+      }
+      uint32_t floats_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      floats_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      floats_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      floats_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->floats_length);
+      if(floats_lengthT > floats_length)
+        this->floats = (float*)realloc(this->floats, floats_lengthT * sizeof(float));
+      floats_length = floats_lengthT;
+      for( uint32_t i = 0; i < floats_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_st_floats;
+      u_st_floats.base = 0;
+      u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_floats.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_floats = u_st_floats.real;
+      offset += sizeof(this->st_floats);
+        memcpy( &(this->floats[i]), &(this->st_floats), sizeof(float));
+      }
+      uint32_t strings_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      strings_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      strings_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      strings_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->strings_length);
+      if(strings_lengthT > strings_length)
+        this->strings = (char**)realloc(this->strings, strings_lengthT * sizeof(char*));
+      strings_length = strings_lengthT;
+      for( uint32_t i = 0; i < strings_length; i++){
+      uint32_t length_st_strings;
+      arrToVar(length_st_strings, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_strings; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_strings-1]=0;
+      this->st_strings = (char *)(inbuffer + offset-1);
+      offset += length_st_strings;
+        memcpy( &(this->strings[i]), &(this->st_strings), sizeof(char*));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return REQUESTPARAM; };
+    const char * getMD5(){ return "9f0e98bda65981986ddf53afa7a40e49"; };
+
+  };
+
+  class RequestParam {
+    public:
+    typedef RequestParamRequest Request;
+    typedef RequestParamResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/rosserial_msgs/RequestServiceInfo.h b/otto_controller_source/Inc/rosserial_msgs/RequestServiceInfo.h
new file mode 100644 (file)
index 0000000..b18cf9d
--- /dev/null
@@ -0,0 +1,138 @@
+#ifndef _ROS_SERVICE_RequestServiceInfo_h
+#define _ROS_SERVICE_RequestServiceInfo_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace rosserial_msgs
+{
+
+static const char REQUESTSERVICEINFO[] = "rosserial_msgs/RequestServiceInfo";
+
+  class RequestServiceInfoRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _service_type;
+      _service_type service;
+
+    RequestServiceInfoRequest():
+      service("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_service = strlen(this->service);
+      varToArr(outbuffer + offset, length_service);
+      offset += 4;
+      memcpy(outbuffer + offset, this->service, length_service);
+      offset += length_service;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_service;
+      arrToVar(length_service, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_service; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_service-1]=0;
+      this->service = (char *)(inbuffer + offset-1);
+      offset += length_service;
+     return offset;
+    }
+
+    const char * getType(){ return REQUESTSERVICEINFO; };
+    const char * getMD5(){ return "1cbcfa13b08f6d36710b9af8741e6112"; };
+
+  };
+
+  class RequestServiceInfoResponse : public ros::Msg
+  {
+    public:
+      typedef const char* _service_md5_type;
+      _service_md5_type service_md5;
+      typedef const char* _request_md5_type;
+      _request_md5_type request_md5;
+      typedef const char* _response_md5_type;
+      _response_md5_type response_md5;
+
+    RequestServiceInfoResponse():
+      service_md5(""),
+      request_md5(""),
+      response_md5("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_service_md5 = strlen(this->service_md5);
+      varToArr(outbuffer + offset, length_service_md5);
+      offset += 4;
+      memcpy(outbuffer + offset, this->service_md5, length_service_md5);
+      offset += length_service_md5;
+      uint32_t length_request_md5 = strlen(this->request_md5);
+      varToArr(outbuffer + offset, length_request_md5);
+      offset += 4;
+      memcpy(outbuffer + offset, this->request_md5, length_request_md5);
+      offset += length_request_md5;
+      uint32_t length_response_md5 = strlen(this->response_md5);
+      varToArr(outbuffer + offset, length_response_md5);
+      offset += 4;
+      memcpy(outbuffer + offset, this->response_md5, length_response_md5);
+      offset += length_response_md5;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_service_md5;
+      arrToVar(length_service_md5, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_service_md5; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_service_md5-1]=0;
+      this->service_md5 = (char *)(inbuffer + offset-1);
+      offset += length_service_md5;
+      uint32_t length_request_md5;
+      arrToVar(length_request_md5, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_request_md5; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_request_md5-1]=0;
+      this->request_md5 = (char *)(inbuffer + offset-1);
+      offset += length_request_md5;
+      uint32_t length_response_md5;
+      arrToVar(length_response_md5, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_response_md5; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_response_md5-1]=0;
+      this->response_md5 = (char *)(inbuffer + offset-1);
+      offset += length_response_md5;
+     return offset;
+    }
+
+    const char * getType(){ return REQUESTSERVICEINFO; };
+    const char * getMD5(){ return "c3d6dd25b909596479fbbc6559fa6874"; };
+
+  };
+
+  class RequestServiceInfo {
+    public:
+    typedef RequestServiceInfoRequest Request;
+    typedef RequestServiceInfoResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/rosserial_msgs/TopicInfo.h b/otto_controller_source/Inc/rosserial_msgs/TopicInfo.h
new file mode 100644 (file)
index 0000000..7934245
--- /dev/null
@@ -0,0 +1,130 @@
+#ifndef _ROS_rosserial_msgs_TopicInfo_h
+#define _ROS_rosserial_msgs_TopicInfo_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace rosserial_msgs
+{
+
+  class TopicInfo : public ros::Msg
+  {
+    public:
+      typedef uint16_t _topic_id_type;
+      _topic_id_type topic_id;
+      typedef const char* _topic_name_type;
+      _topic_name_type topic_name;
+      typedef const char* _message_type_type;
+      _message_type_type message_type;
+      typedef const char* _md5sum_type;
+      _md5sum_type md5sum;
+      typedef int32_t _buffer_size_type;
+      _buffer_size_type buffer_size;
+      enum { ID_PUBLISHER = 0 };
+      enum { ID_SUBSCRIBER = 1 };
+      enum { ID_SERVICE_SERVER = 2 };
+      enum { ID_SERVICE_CLIENT = 4 };
+      enum { ID_PARAMETER_REQUEST = 6 };
+      enum { ID_LOG = 7 };
+      enum { ID_TIME = 10 };
+      enum { ID_TX_STOP = 11 };
+
+    TopicInfo():
+      topic_id(0),
+      topic_name(""),
+      message_type(""),
+      md5sum(""),
+      buffer_size(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->topic_id >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->topic_id >> (8 * 1)) & 0xFF;
+      offset += sizeof(this->topic_id);
+      uint32_t length_topic_name = strlen(this->topic_name);
+      varToArr(outbuffer + offset, length_topic_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->topic_name, length_topic_name);
+      offset += length_topic_name;
+      uint32_t length_message_type = strlen(this->message_type);
+      varToArr(outbuffer + offset, length_message_type);
+      offset += 4;
+      memcpy(outbuffer + offset, this->message_type, length_message_type);
+      offset += length_message_type;
+      uint32_t length_md5sum = strlen(this->md5sum);
+      varToArr(outbuffer + offset, length_md5sum);
+      offset += 4;
+      memcpy(outbuffer + offset, this->md5sum, length_md5sum);
+      offset += length_md5sum;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_buffer_size;
+      u_buffer_size.real = this->buffer_size;
+      *(outbuffer + offset + 0) = (u_buffer_size.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_buffer_size.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_buffer_size.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_buffer_size.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->buffer_size);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->topic_id =  ((uint16_t) (*(inbuffer + offset)));
+      this->topic_id |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      offset += sizeof(this->topic_id);
+      uint32_t length_topic_name;
+      arrToVar(length_topic_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_topic_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_topic_name-1]=0;
+      this->topic_name = (char *)(inbuffer + offset-1);
+      offset += length_topic_name;
+      uint32_t length_message_type;
+      arrToVar(length_message_type, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_message_type; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_message_type-1]=0;
+      this->message_type = (char *)(inbuffer + offset-1);
+      offset += length_message_type;
+      uint32_t length_md5sum;
+      arrToVar(length_md5sum, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_md5sum; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_md5sum-1]=0;
+      this->md5sum = (char *)(inbuffer + offset-1);
+      offset += length_md5sum;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_buffer_size;
+      u_buffer_size.base = 0;
+      u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_buffer_size.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->buffer_size = u_buffer_size.real;
+      offset += sizeof(this->buffer_size);
+     return offset;
+    }
+
+    const char * getType(){ return "rosserial_msgs/TopicInfo"; };
+    const char * getMD5(){ return "0ad51f88fc44892f8c10684077646005"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/BatteryState.h b/otto_controller_source/Inc/sensor_msgs/BatteryState.h
new file mode 100644 (file)
index 0000000..3aa77c5
--- /dev/null
@@ -0,0 +1,326 @@
+#ifndef _ROS_sensor_msgs_BatteryState_h
+#define _ROS_sensor_msgs_BatteryState_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace sensor_msgs
+{
+
+  class BatteryState : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef float _voltage_type;
+      _voltage_type voltage;
+      typedef float _current_type;
+      _current_type current;
+      typedef float _charge_type;
+      _charge_type charge;
+      typedef float _capacity_type;
+      _capacity_type capacity;
+      typedef float _design_capacity_type;
+      _design_capacity_type design_capacity;
+      typedef float _percentage_type;
+      _percentage_type percentage;
+      typedef uint8_t _power_supply_status_type;
+      _power_supply_status_type power_supply_status;
+      typedef uint8_t _power_supply_health_type;
+      _power_supply_health_type power_supply_health;
+      typedef uint8_t _power_supply_technology_type;
+      _power_supply_technology_type power_supply_technology;
+      typedef bool _present_type;
+      _present_type present;
+      uint32_t cell_voltage_length;
+      typedef float _cell_voltage_type;
+      _cell_voltage_type st_cell_voltage;
+      _cell_voltage_type * cell_voltage;
+      typedef const char* _location_type;
+      _location_type location;
+      typedef const char* _serial_number_type;
+      _serial_number_type serial_number;
+      enum { POWER_SUPPLY_STATUS_UNKNOWN =  0 };
+      enum { POWER_SUPPLY_STATUS_CHARGING =  1 };
+      enum { POWER_SUPPLY_STATUS_DISCHARGING =  2 };
+      enum { POWER_SUPPLY_STATUS_NOT_CHARGING =  3 };
+      enum { POWER_SUPPLY_STATUS_FULL =  4 };
+      enum { POWER_SUPPLY_HEALTH_UNKNOWN =  0 };
+      enum { POWER_SUPPLY_HEALTH_GOOD =  1 };
+      enum { POWER_SUPPLY_HEALTH_OVERHEAT =  2 };
+      enum { POWER_SUPPLY_HEALTH_DEAD =  3 };
+      enum { POWER_SUPPLY_HEALTH_OVERVOLTAGE =  4 };
+      enum { POWER_SUPPLY_HEALTH_UNSPEC_FAILURE =  5 };
+      enum { POWER_SUPPLY_HEALTH_COLD =  6 };
+      enum { POWER_SUPPLY_HEALTH_WATCHDOG_TIMER_EXPIRE =  7 };
+      enum { POWER_SUPPLY_HEALTH_SAFETY_TIMER_EXPIRE =  8 };
+      enum { POWER_SUPPLY_TECHNOLOGY_UNKNOWN =  0 };
+      enum { POWER_SUPPLY_TECHNOLOGY_NIMH =  1 };
+      enum { POWER_SUPPLY_TECHNOLOGY_LION =  2 };
+      enum { POWER_SUPPLY_TECHNOLOGY_LIPO =  3 };
+      enum { POWER_SUPPLY_TECHNOLOGY_LIFE =  4 };
+      enum { POWER_SUPPLY_TECHNOLOGY_NICD =  5 };
+      enum { POWER_SUPPLY_TECHNOLOGY_LIMN =  6 };
+
+    BatteryState():
+      header(),
+      voltage(0),
+      current(0),
+      charge(0),
+      capacity(0),
+      design_capacity(0),
+      percentage(0),
+      power_supply_status(0),
+      power_supply_health(0),
+      power_supply_technology(0),
+      present(0),
+      cell_voltage_length(0), cell_voltage(NULL),
+      location(""),
+      serial_number("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_voltage;
+      u_voltage.real = this->voltage;
+      *(outbuffer + offset + 0) = (u_voltage.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_voltage.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_voltage.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_voltage.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->voltage);
+      union {
+        float real;
+        uint32_t base;
+      } u_current;
+      u_current.real = this->current;
+      *(outbuffer + offset + 0) = (u_current.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_current.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_current.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_current.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->current);
+      union {
+        float real;
+        uint32_t base;
+      } u_charge;
+      u_charge.real = this->charge;
+      *(outbuffer + offset + 0) = (u_charge.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_charge.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_charge.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_charge.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->charge);
+      union {
+        float real;
+        uint32_t base;
+      } u_capacity;
+      u_capacity.real = this->capacity;
+      *(outbuffer + offset + 0) = (u_capacity.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_capacity.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_capacity.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_capacity.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->capacity);
+      union {
+        float real;
+        uint32_t base;
+      } u_design_capacity;
+      u_design_capacity.real = this->design_capacity;
+      *(outbuffer + offset + 0) = (u_design_capacity.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_design_capacity.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_design_capacity.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_design_capacity.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->design_capacity);
+      union {
+        float real;
+        uint32_t base;
+      } u_percentage;
+      u_percentage.real = this->percentage;
+      *(outbuffer + offset + 0) = (u_percentage.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_percentage.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_percentage.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_percentage.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->percentage);
+      *(outbuffer + offset + 0) = (this->power_supply_status >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->power_supply_status);
+      *(outbuffer + offset + 0) = (this->power_supply_health >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->power_supply_health);
+      *(outbuffer + offset + 0) = (this->power_supply_technology >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->power_supply_technology);
+      union {
+        bool real;
+        uint8_t base;
+      } u_present;
+      u_present.real = this->present;
+      *(outbuffer + offset + 0) = (u_present.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->present);
+      *(outbuffer + offset + 0) = (this->cell_voltage_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->cell_voltage_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->cell_voltage_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->cell_voltage_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->cell_voltage_length);
+      for( uint32_t i = 0; i < cell_voltage_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_cell_voltagei;
+      u_cell_voltagei.real = this->cell_voltage[i];
+      *(outbuffer + offset + 0) = (u_cell_voltagei.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_cell_voltagei.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_cell_voltagei.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_cell_voltagei.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->cell_voltage[i]);
+      }
+      uint32_t length_location = strlen(this->location);
+      varToArr(outbuffer + offset, length_location);
+      offset += 4;
+      memcpy(outbuffer + offset, this->location, length_location);
+      offset += length_location;
+      uint32_t length_serial_number = strlen(this->serial_number);
+      varToArr(outbuffer + offset, length_serial_number);
+      offset += 4;
+      memcpy(outbuffer + offset, this->serial_number, length_serial_number);
+      offset += length_serial_number;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_voltage;
+      u_voltage.base = 0;
+      u_voltage.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_voltage.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_voltage.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_voltage.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->voltage = u_voltage.real;
+      offset += sizeof(this->voltage);
+      union {
+        float real;
+        uint32_t base;
+      } u_current;
+      u_current.base = 0;
+      u_current.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_current.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_current.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_current.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->current = u_current.real;
+      offset += sizeof(this->current);
+      union {
+        float real;
+        uint32_t base;
+      } u_charge;
+      u_charge.base = 0;
+      u_charge.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_charge.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_charge.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_charge.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->charge = u_charge.real;
+      offset += sizeof(this->charge);
+      union {
+        float real;
+        uint32_t base;
+      } u_capacity;
+      u_capacity.base = 0;
+      u_capacity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_capacity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_capacity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_capacity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->capacity = u_capacity.real;
+      offset += sizeof(this->capacity);
+      union {
+        float real;
+        uint32_t base;
+      } u_design_capacity;
+      u_design_capacity.base = 0;
+      u_design_capacity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_design_capacity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_design_capacity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_design_capacity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->design_capacity = u_design_capacity.real;
+      offset += sizeof(this->design_capacity);
+      union {
+        float real;
+        uint32_t base;
+      } u_percentage;
+      u_percentage.base = 0;
+      u_percentage.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_percentage.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_percentage.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_percentage.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->percentage = u_percentage.real;
+      offset += sizeof(this->percentage);
+      this->power_supply_status =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->power_supply_status);
+      this->power_supply_health =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->power_supply_health);
+      this->power_supply_technology =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->power_supply_technology);
+      union {
+        bool real;
+        uint8_t base;
+      } u_present;
+      u_present.base = 0;
+      u_present.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->present = u_present.real;
+      offset += sizeof(this->present);
+      uint32_t cell_voltage_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      cell_voltage_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      cell_voltage_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      cell_voltage_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->cell_voltage_length);
+      if(cell_voltage_lengthT > cell_voltage_length)
+        this->cell_voltage = (float*)realloc(this->cell_voltage, cell_voltage_lengthT * sizeof(float));
+      cell_voltage_length = cell_voltage_lengthT;
+      for( uint32_t i = 0; i < cell_voltage_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_st_cell_voltage;
+      u_st_cell_voltage.base = 0;
+      u_st_cell_voltage.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_cell_voltage.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_cell_voltage.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_cell_voltage.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_cell_voltage = u_st_cell_voltage.real;
+      offset += sizeof(this->st_cell_voltage);
+        memcpy( &(this->cell_voltage[i]), &(this->st_cell_voltage), sizeof(float));
+      }
+      uint32_t length_location;
+      arrToVar(length_location, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_location; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_location-1]=0;
+      this->location = (char *)(inbuffer + offset-1);
+      offset += length_location;
+      uint32_t length_serial_number;
+      arrToVar(length_serial_number, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_serial_number; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_serial_number-1]=0;
+      this->serial_number = (char *)(inbuffer + offset-1);
+      offset += length_serial_number;
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/BatteryState"; };
+    const char * getMD5(){ return "476f837fa6771f6e16e3bf4ef96f8770"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/CameraInfo.h b/otto_controller_source/Inc/sensor_msgs/CameraInfo.h
new file mode 100644 (file)
index 0000000..47bbfab
--- /dev/null
@@ -0,0 +1,168 @@
+#ifndef _ROS_sensor_msgs_CameraInfo_h
+#define _ROS_sensor_msgs_CameraInfo_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "sensor_msgs/RegionOfInterest.h"
+
+namespace sensor_msgs
+{
+
+  class CameraInfo : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef uint32_t _height_type;
+      _height_type height;
+      typedef uint32_t _width_type;
+      _width_type width;
+      typedef const char* _distortion_model_type;
+      _distortion_model_type distortion_model;
+      uint32_t D_length;
+      typedef float _D_type;
+      _D_type st_D;
+      _D_type * D;
+      float K[9];
+      float R[9];
+      float P[12];
+      typedef uint32_t _binning_x_type;
+      _binning_x_type binning_x;
+      typedef uint32_t _binning_y_type;
+      _binning_y_type binning_y;
+      typedef sensor_msgs::RegionOfInterest _roi_type;
+      _roi_type roi;
+
+    CameraInfo():
+      header(),
+      height(0),
+      width(0),
+      distortion_model(""),
+      D_length(0), D(NULL),
+      K(),
+      R(),
+      P(),
+      binning_x(0),
+      binning_y(0),
+      roi()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->height);
+      *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->width);
+      uint32_t length_distortion_model = strlen(this->distortion_model);
+      varToArr(outbuffer + offset, length_distortion_model);
+      offset += 4;
+      memcpy(outbuffer + offset, this->distortion_model, length_distortion_model);
+      offset += length_distortion_model;
+      *(outbuffer + offset + 0) = (this->D_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->D_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->D_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->D_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->D_length);
+      for( uint32_t i = 0; i < D_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->D[i]);
+      }
+      for( uint32_t i = 0; i < 9; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->K[i]);
+      }
+      for( uint32_t i = 0; i < 9; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->R[i]);
+      }
+      for( uint32_t i = 0; i < 12; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->P[i]);
+      }
+      *(outbuffer + offset + 0) = (this->binning_x >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->binning_x >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->binning_x >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->binning_x >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->binning_x);
+      *(outbuffer + offset + 0) = (this->binning_y >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->binning_y >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->binning_y >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->binning_y >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->binning_y);
+      offset += this->roi.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      this->height =  ((uint32_t) (*(inbuffer + offset)));
+      this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->height);
+      this->width =  ((uint32_t) (*(inbuffer + offset)));
+      this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->width);
+      uint32_t length_distortion_model;
+      arrToVar(length_distortion_model, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_distortion_model; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_distortion_model-1]=0;
+      this->distortion_model = (char *)(inbuffer + offset-1);
+      offset += length_distortion_model;
+      uint32_t D_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      D_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      D_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      D_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->D_length);
+      if(D_lengthT > D_length)
+        this->D = (float*)realloc(this->D, D_lengthT * sizeof(float));
+      D_length = D_lengthT;
+      for( uint32_t i = 0; i < D_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_D));
+        memcpy( &(this->D[i]), &(this->st_D), sizeof(float));
+      }
+      for( uint32_t i = 0; i < 9; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->K[i]));
+      }
+      for( uint32_t i = 0; i < 9; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->R[i]));
+      }
+      for( uint32_t i = 0; i < 12; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->P[i]));
+      }
+      this->binning_x =  ((uint32_t) (*(inbuffer + offset)));
+      this->binning_x |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->binning_x |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->binning_x |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->binning_x);
+      this->binning_y =  ((uint32_t) (*(inbuffer + offset)));
+      this->binning_y |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->binning_y |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->binning_y |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->binning_y);
+      offset += this->roi.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/CameraInfo"; };
+    const char * getMD5(){ return "c9a58c1b0b154e0e6da7578cb991d214"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/ChannelFloat32.h b/otto_controller_source/Inc/sensor_msgs/ChannelFloat32.h
new file mode 100644 (file)
index 0000000..e4f83f9
--- /dev/null
@@ -0,0 +1,99 @@
+#ifndef _ROS_sensor_msgs_ChannelFloat32_h
+#define _ROS_sensor_msgs_ChannelFloat32_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace sensor_msgs
+{
+
+  class ChannelFloat32 : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      uint32_t values_length;
+      typedef float _values_type;
+      _values_type st_values;
+      _values_type * values;
+
+    ChannelFloat32():
+      name(""),
+      values_length(0), values(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      *(outbuffer + offset + 0) = (this->values_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->values_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->values_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->values_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->values_length);
+      for( uint32_t i = 0; i < values_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_valuesi;
+      u_valuesi.real = this->values[i];
+      *(outbuffer + offset + 0) = (u_valuesi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_valuesi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_valuesi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_valuesi.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->values[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      uint32_t values_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      values_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      values_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      values_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->values_length);
+      if(values_lengthT > values_length)
+        this->values = (float*)realloc(this->values, values_lengthT * sizeof(float));
+      values_length = values_lengthT;
+      for( uint32_t i = 0; i < values_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_st_values;
+      u_st_values.base = 0;
+      u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_values.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_values = u_st_values.real;
+      offset += sizeof(this->st_values);
+        memcpy( &(this->values[i]), &(this->st_values), sizeof(float));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/ChannelFloat32"; };
+    const char * getMD5(){ return "3d40139cdd33dfedcb71ffeeeb42ae7f"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/CompressedImage.h b/otto_controller_source/Inc/sensor_msgs/CompressedImage.h
new file mode 100644 (file)
index 0000000..ad8ca41
--- /dev/null
@@ -0,0 +1,88 @@
+#ifndef _ROS_sensor_msgs_CompressedImage_h
+#define _ROS_sensor_msgs_CompressedImage_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace sensor_msgs
+{
+
+  class CompressedImage : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef const char* _format_type;
+      _format_type format;
+      uint32_t data_length;
+      typedef uint8_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    CompressedImage():
+      header(),
+      format(""),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      uint32_t length_format = strlen(this->format);
+      varToArr(outbuffer + offset, length_format);
+      offset += 4;
+      memcpy(outbuffer + offset, this->format, length_format);
+      offset += length_format;
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t length_format;
+      arrToVar(length_format, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_format; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_format-1]=0;
+      this->format = (char *)(inbuffer + offset-1);
+      offset += length_format;
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      this->st_data =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/CompressedImage"; };
+    const char * getMD5(){ return "8f7a12909da2c9d3332d540a0977563f"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/FluidPressure.h b/otto_controller_source/Inc/sensor_msgs/FluidPressure.h
new file mode 100644 (file)
index 0000000..b9d77ef
--- /dev/null
@@ -0,0 +1,54 @@
+#ifndef _ROS_sensor_msgs_FluidPressure_h
+#define _ROS_sensor_msgs_FluidPressure_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace sensor_msgs
+{
+
+  class FluidPressure : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef float _fluid_pressure_type;
+      _fluid_pressure_type fluid_pressure;
+      typedef float _variance_type;
+      _variance_type variance;
+
+    FluidPressure():
+      header(),
+      fluid_pressure(0),
+      variance(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += serializeAvrFloat64(outbuffer + offset, this->fluid_pressure);
+      offset += serializeAvrFloat64(outbuffer + offset, this->variance);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->fluid_pressure));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->variance));
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/FluidPressure"; };
+    const char * getMD5(){ return "804dc5cea1c5306d6a2eb80b9833befe"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/Illuminance.h b/otto_controller_source/Inc/sensor_msgs/Illuminance.h
new file mode 100644 (file)
index 0000000..1314fea
--- /dev/null
@@ -0,0 +1,54 @@
+#ifndef _ROS_sensor_msgs_Illuminance_h
+#define _ROS_sensor_msgs_Illuminance_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace sensor_msgs
+{
+
+  class Illuminance : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef float _illuminance_type;
+      _illuminance_type illuminance;
+      typedef float _variance_type;
+      _variance_type variance;
+
+    Illuminance():
+      header(),
+      illuminance(0),
+      variance(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += serializeAvrFloat64(outbuffer + offset, this->illuminance);
+      offset += serializeAvrFloat64(outbuffer + offset, this->variance);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->illuminance));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->variance));
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/Illuminance"; };
+    const char * getMD5(){ return "8cf5febb0952fca9d650c3d11a81a188"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/Image.h b/otto_controller_source/Inc/sensor_msgs/Image.h
new file mode 100644 (file)
index 0000000..81675d5
--- /dev/null
@@ -0,0 +1,134 @@
+#ifndef _ROS_sensor_msgs_Image_h
+#define _ROS_sensor_msgs_Image_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace sensor_msgs
+{
+
+  class Image : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef uint32_t _height_type;
+      _height_type height;
+      typedef uint32_t _width_type;
+      _width_type width;
+      typedef const char* _encoding_type;
+      _encoding_type encoding;
+      typedef uint8_t _is_bigendian_type;
+      _is_bigendian_type is_bigendian;
+      typedef uint32_t _step_type;
+      _step_type step;
+      uint32_t data_length;
+      typedef uint8_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    Image():
+      header(),
+      height(0),
+      width(0),
+      encoding(""),
+      is_bigendian(0),
+      step(0),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->height);
+      *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->width);
+      uint32_t length_encoding = strlen(this->encoding);
+      varToArr(outbuffer + offset, length_encoding);
+      offset += 4;
+      memcpy(outbuffer + offset, this->encoding, length_encoding);
+      offset += length_encoding;
+      *(outbuffer + offset + 0) = (this->is_bigendian >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->is_bigendian);
+      *(outbuffer + offset + 0) = (this->step >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->step >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->step >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->step >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->step);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      this->height =  ((uint32_t) (*(inbuffer + offset)));
+      this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->height);
+      this->width =  ((uint32_t) (*(inbuffer + offset)));
+      this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->width);
+      uint32_t length_encoding;
+      arrToVar(length_encoding, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_encoding; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_encoding-1]=0;
+      this->encoding = (char *)(inbuffer + offset-1);
+      offset += length_encoding;
+      this->is_bigendian =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->is_bigendian);
+      this->step =  ((uint32_t) (*(inbuffer + offset)));
+      this->step |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->step |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->step |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->step);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      this->st_data =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/Image"; };
+    const char * getMD5(){ return "060021388200f6f0f447d0fcd9c64743"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/Imu.h b/otto_controller_source/Inc/sensor_msgs/Imu.h
new file mode 100644 (file)
index 0000000..fa6357e
--- /dev/null
@@ -0,0 +1,85 @@
+#ifndef _ROS_sensor_msgs_Imu_h
+#define _ROS_sensor_msgs_Imu_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Quaternion.h"
+#include "geometry_msgs/Vector3.h"
+
+namespace sensor_msgs
+{
+
+  class Imu : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Quaternion _orientation_type;
+      _orientation_type orientation;
+      float orientation_covariance[9];
+      typedef geometry_msgs::Vector3 _angular_velocity_type;
+      _angular_velocity_type angular_velocity;
+      float angular_velocity_covariance[9];
+      typedef geometry_msgs::Vector3 _linear_acceleration_type;
+      _linear_acceleration_type linear_acceleration;
+      float linear_acceleration_covariance[9];
+
+    Imu():
+      header(),
+      orientation(),
+      orientation_covariance(),
+      angular_velocity(),
+      angular_velocity_covariance(),
+      linear_acceleration(),
+      linear_acceleration_covariance()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->orientation.serialize(outbuffer + offset);
+      for( uint32_t i = 0; i < 9; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->orientation_covariance[i]);
+      }
+      offset += this->angular_velocity.serialize(outbuffer + offset);
+      for( uint32_t i = 0; i < 9; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->angular_velocity_covariance[i]);
+      }
+      offset += this->linear_acceleration.serialize(outbuffer + offset);
+      for( uint32_t i = 0; i < 9; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->linear_acceleration_covariance[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->orientation.deserialize(inbuffer + offset);
+      for( uint32_t i = 0; i < 9; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->orientation_covariance[i]));
+      }
+      offset += this->angular_velocity.deserialize(inbuffer + offset);
+      for( uint32_t i = 0; i < 9; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->angular_velocity_covariance[i]));
+      }
+      offset += this->linear_acceleration.deserialize(inbuffer + offset);
+      for( uint32_t i = 0; i < 9; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->linear_acceleration_covariance[i]));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/Imu"; };
+    const char * getMD5(){ return "6a62c6daae103f4ff57a132d6f95cec2"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/JointState.h b/otto_controller_source/Inc/sensor_msgs/JointState.h
new file mode 100644 (file)
index 0000000..50dc1b4
--- /dev/null
@@ -0,0 +1,156 @@
+#ifndef _ROS_sensor_msgs_JointState_h
+#define _ROS_sensor_msgs_JointState_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace sensor_msgs
+{
+
+  class JointState : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t name_length;
+      typedef char* _name_type;
+      _name_type st_name;
+      _name_type * name;
+      uint32_t position_length;
+      typedef float _position_type;
+      _position_type st_position;
+      _position_type * position;
+      uint32_t velocity_length;
+      typedef float _velocity_type;
+      _velocity_type st_velocity;
+      _velocity_type * velocity;
+      uint32_t effort_length;
+      typedef float _effort_type;
+      _effort_type st_effort;
+      _effort_type * effort;
+
+    JointState():
+      header(),
+      name_length(0), name(NULL),
+      position_length(0), position(NULL),
+      velocity_length(0), velocity(NULL),
+      effort_length(0), effort(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->name_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->name_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->name_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->name_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->name_length);
+      for( uint32_t i = 0; i < name_length; i++){
+      uint32_t length_namei = strlen(this->name[i]);
+      varToArr(outbuffer + offset, length_namei);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name[i], length_namei);
+      offset += length_namei;
+      }
+      *(outbuffer + offset + 0) = (this->position_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->position_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->position_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->position_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->position_length);
+      for( uint32_t i = 0; i < position_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->position[i]);
+      }
+      *(outbuffer + offset + 0) = (this->velocity_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->velocity_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->velocity_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->velocity_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->velocity_length);
+      for( uint32_t i = 0; i < velocity_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->velocity[i]);
+      }
+      *(outbuffer + offset + 0) = (this->effort_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->effort_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->effort_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->effort_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->effort_length);
+      for( uint32_t i = 0; i < effort_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->effort[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t name_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      name_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->name_length);
+      if(name_lengthT > name_length)
+        this->name = (char**)realloc(this->name, name_lengthT * sizeof(char*));
+      name_length = name_lengthT;
+      for( uint32_t i = 0; i < name_length; i++){
+      uint32_t length_st_name;
+      arrToVar(length_st_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_name-1]=0;
+      this->st_name = (char *)(inbuffer + offset-1);
+      offset += length_st_name;
+        memcpy( &(this->name[i]), &(this->st_name), sizeof(char*));
+      }
+      uint32_t position_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      position_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      position_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      position_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->position_length);
+      if(position_lengthT > position_length)
+        this->position = (float*)realloc(this->position, position_lengthT * sizeof(float));
+      position_length = position_lengthT;
+      for( uint32_t i = 0; i < position_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_position));
+        memcpy( &(this->position[i]), &(this->st_position), sizeof(float));
+      }
+      uint32_t velocity_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      velocity_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->velocity_length);
+      if(velocity_lengthT > velocity_length)
+        this->velocity = (float*)realloc(this->velocity, velocity_lengthT * sizeof(float));
+      velocity_length = velocity_lengthT;
+      for( uint32_t i = 0; i < velocity_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_velocity));
+        memcpy( &(this->velocity[i]), &(this->st_velocity), sizeof(float));
+      }
+      uint32_t effort_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->effort_length);
+      if(effort_lengthT > effort_length)
+        this->effort = (float*)realloc(this->effort, effort_lengthT * sizeof(float));
+      effort_length = effort_lengthT;
+      for( uint32_t i = 0; i < effort_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_effort));
+        memcpy( &(this->effort[i]), &(this->st_effort), sizeof(float));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/JointState"; };
+    const char * getMD5(){ return "3066dcd76a6cfaef579bd0f34173e9fd"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/Joy.h b/otto_controller_source/Inc/sensor_msgs/Joy.h
new file mode 100644 (file)
index 0000000..9162813
--- /dev/null
@@ -0,0 +1,132 @@
+#ifndef _ROS_sensor_msgs_Joy_h
+#define _ROS_sensor_msgs_Joy_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace sensor_msgs
+{
+
+  class Joy : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t axes_length;
+      typedef float _axes_type;
+      _axes_type st_axes;
+      _axes_type * axes;
+      uint32_t buttons_length;
+      typedef int32_t _buttons_type;
+      _buttons_type st_buttons;
+      _buttons_type * buttons;
+
+    Joy():
+      header(),
+      axes_length(0), axes(NULL),
+      buttons_length(0), buttons(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->axes_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->axes_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->axes_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->axes_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->axes_length);
+      for( uint32_t i = 0; i < axes_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_axesi;
+      u_axesi.real = this->axes[i];
+      *(outbuffer + offset + 0) = (u_axesi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_axesi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_axesi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_axesi.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->axes[i]);
+      }
+      *(outbuffer + offset + 0) = (this->buttons_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->buttons_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->buttons_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->buttons_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->buttons_length);
+      for( uint32_t i = 0; i < buttons_length; i++){
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_buttonsi;
+      u_buttonsi.real = this->buttons[i];
+      *(outbuffer + offset + 0) = (u_buttonsi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_buttonsi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_buttonsi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_buttonsi.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->buttons[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t axes_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      axes_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      axes_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      axes_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->axes_length);
+      if(axes_lengthT > axes_length)
+        this->axes = (float*)realloc(this->axes, axes_lengthT * sizeof(float));
+      axes_length = axes_lengthT;
+      for( uint32_t i = 0; i < axes_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_st_axes;
+      u_st_axes.base = 0;
+      u_st_axes.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_axes.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_axes.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_axes.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_axes = u_st_axes.real;
+      offset += sizeof(this->st_axes);
+        memcpy( &(this->axes[i]), &(this->st_axes), sizeof(float));
+      }
+      uint32_t buttons_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      buttons_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      buttons_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      buttons_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->buttons_length);
+      if(buttons_lengthT > buttons_length)
+        this->buttons = (int32_t*)realloc(this->buttons, buttons_lengthT * sizeof(int32_t));
+      buttons_length = buttons_lengthT;
+      for( uint32_t i = 0; i < buttons_length; i++){
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_st_buttons;
+      u_st_buttons.base = 0;
+      u_st_buttons.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_buttons.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_buttons.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_buttons.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_buttons = u_st_buttons.real;
+      offset += sizeof(this->st_buttons);
+        memcpy( &(this->buttons[i]), &(this->st_buttons), sizeof(int32_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/Joy"; };
+    const char * getMD5(){ return "5a9ea5f83505693b71e785041e67a8bb"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/JoyFeedback.h b/otto_controller_source/Inc/sensor_msgs/JoyFeedback.h
new file mode 100644 (file)
index 0000000..bfbbb08
--- /dev/null
@@ -0,0 +1,79 @@
+#ifndef _ROS_sensor_msgs_JoyFeedback_h
+#define _ROS_sensor_msgs_JoyFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace sensor_msgs
+{
+
+  class JoyFeedback : public ros::Msg
+  {
+    public:
+      typedef uint8_t _type_type;
+      _type_type type;
+      typedef uint8_t _id_type;
+      _id_type id;
+      typedef float _intensity_type;
+      _intensity_type intensity;
+      enum { TYPE_LED =  0 };
+      enum { TYPE_RUMBLE =  1 };
+      enum { TYPE_BUZZER =  2 };
+
+    JoyFeedback():
+      type(0),
+      id(0),
+      intensity(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->type);
+      *(outbuffer + offset + 0) = (this->id >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->id);
+      union {
+        float real;
+        uint32_t base;
+      } u_intensity;
+      u_intensity.real = this->intensity;
+      *(outbuffer + offset + 0) = (u_intensity.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_intensity.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_intensity.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_intensity.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->intensity);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->type =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->type);
+      this->id =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->id);
+      union {
+        float real;
+        uint32_t base;
+      } u_intensity;
+      u_intensity.base = 0;
+      u_intensity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_intensity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_intensity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_intensity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->intensity = u_intensity.real;
+      offset += sizeof(this->intensity);
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/JoyFeedback"; };
+    const char * getMD5(){ return "f4dcd73460360d98f36e55ee7f2e46f1"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/JoyFeedbackArray.h b/otto_controller_source/Inc/sensor_msgs/JoyFeedbackArray.h
new file mode 100644 (file)
index 0000000..a97bfcf
--- /dev/null
@@ -0,0 +1,64 @@
+#ifndef _ROS_sensor_msgs_JoyFeedbackArray_h
+#define _ROS_sensor_msgs_JoyFeedbackArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "sensor_msgs/JoyFeedback.h"
+
+namespace sensor_msgs
+{
+
+  class JoyFeedbackArray : public ros::Msg
+  {
+    public:
+      uint32_t array_length;
+      typedef sensor_msgs::JoyFeedback _array_type;
+      _array_type st_array;
+      _array_type * array;
+
+    JoyFeedbackArray():
+      array_length(0), array(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->array_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->array_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->array_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->array_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->array_length);
+      for( uint32_t i = 0; i < array_length; i++){
+      offset += this->array[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t array_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      array_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      array_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      array_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->array_length);
+      if(array_lengthT > array_length)
+        this->array = (sensor_msgs::JoyFeedback*)realloc(this->array, array_lengthT * sizeof(sensor_msgs::JoyFeedback));
+      array_length = array_lengthT;
+      for( uint32_t i = 0; i < array_length; i++){
+      offset += this->st_array.deserialize(inbuffer + offset);
+        memcpy( &(this->array[i]), &(this->st_array), sizeof(sensor_msgs::JoyFeedback));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/JoyFeedbackArray"; };
+    const char * getMD5(){ return "cde5730a895b1fc4dee6f91b754b213d"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/LaserEcho.h b/otto_controller_source/Inc/sensor_msgs/LaserEcho.h
new file mode 100644 (file)
index 0000000..d523ac3
--- /dev/null
@@ -0,0 +1,82 @@
+#ifndef _ROS_sensor_msgs_LaserEcho_h
+#define _ROS_sensor_msgs_LaserEcho_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace sensor_msgs
+{
+
+  class LaserEcho : public ros::Msg
+  {
+    public:
+      uint32_t echoes_length;
+      typedef float _echoes_type;
+      _echoes_type st_echoes;
+      _echoes_type * echoes;
+
+    LaserEcho():
+      echoes_length(0), echoes(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->echoes_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->echoes_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->echoes_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->echoes_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->echoes_length);
+      for( uint32_t i = 0; i < echoes_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_echoesi;
+      u_echoesi.real = this->echoes[i];
+      *(outbuffer + offset + 0) = (u_echoesi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_echoesi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_echoesi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_echoesi.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->echoes[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t echoes_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      echoes_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      echoes_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      echoes_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->echoes_length);
+      if(echoes_lengthT > echoes_length)
+        this->echoes = (float*)realloc(this->echoes, echoes_lengthT * sizeof(float));
+      echoes_length = echoes_lengthT;
+      for( uint32_t i = 0; i < echoes_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_st_echoes;
+      u_st_echoes.base = 0;
+      u_st_echoes.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_echoes.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_echoes.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_echoes.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_echoes = u_st_echoes.real;
+      offset += sizeof(this->st_echoes);
+        memcpy( &(this->echoes[i]), &(this->st_echoes), sizeof(float));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/LaserEcho"; };
+    const char * getMD5(){ return "8bc5ae449b200fba4d552b4225586696"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/LaserScan.h b/otto_controller_source/Inc/sensor_msgs/LaserScan.h
new file mode 100644 (file)
index 0000000..8ec85f5
--- /dev/null
@@ -0,0 +1,300 @@
+#ifndef _ROS_sensor_msgs_LaserScan_h
+#define _ROS_sensor_msgs_LaserScan_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace sensor_msgs
+{
+
+  class LaserScan : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef float _angle_min_type;
+      _angle_min_type angle_min;
+      typedef float _angle_max_type;
+      _angle_max_type angle_max;
+      typedef float _angle_increment_type;
+      _angle_increment_type angle_increment;
+      typedef float _time_increment_type;
+      _time_increment_type time_increment;
+      typedef float _scan_time_type;
+      _scan_time_type scan_time;
+      typedef float _range_min_type;
+      _range_min_type range_min;
+      typedef float _range_max_type;
+      _range_max_type range_max;
+      uint32_t ranges_length;
+      typedef float _ranges_type;
+      _ranges_type st_ranges;
+      _ranges_type * ranges;
+      uint32_t intensities_length;
+      typedef float _intensities_type;
+      _intensities_type st_intensities;
+      _intensities_type * intensities;
+
+    LaserScan():
+      header(),
+      angle_min(0),
+      angle_max(0),
+      angle_increment(0),
+      time_increment(0),
+      scan_time(0),
+      range_min(0),
+      range_max(0),
+      ranges_length(0), ranges(NULL),
+      intensities_length(0), intensities(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_angle_min;
+      u_angle_min.real = this->angle_min;
+      *(outbuffer + offset + 0) = (u_angle_min.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_angle_min.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_angle_min.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_angle_min.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->angle_min);
+      union {
+        float real;
+        uint32_t base;
+      } u_angle_max;
+      u_angle_max.real = this->angle_max;
+      *(outbuffer + offset + 0) = (u_angle_max.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_angle_max.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_angle_max.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_angle_max.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->angle_max);
+      union {
+        float real;
+        uint32_t base;
+      } u_angle_increment;
+      u_angle_increment.real = this->angle_increment;
+      *(outbuffer + offset + 0) = (u_angle_increment.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_angle_increment.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_angle_increment.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_angle_increment.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->angle_increment);
+      union {
+        float real;
+        uint32_t base;
+      } u_time_increment;
+      u_time_increment.real = this->time_increment;
+      *(outbuffer + offset + 0) = (u_time_increment.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_time_increment.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_time_increment.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_time_increment.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->time_increment);
+      union {
+        float real;
+        uint32_t base;
+      } u_scan_time;
+      u_scan_time.real = this->scan_time;
+      *(outbuffer + offset + 0) = (u_scan_time.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_scan_time.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_scan_time.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_scan_time.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->scan_time);
+      union {
+        float real;
+        uint32_t base;
+      } u_range_min;
+      u_range_min.real = this->range_min;
+      *(outbuffer + offset + 0) = (u_range_min.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_range_min.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_range_min.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_range_min.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->range_min);
+      union {
+        float real;
+        uint32_t base;
+      } u_range_max;
+      u_range_max.real = this->range_max;
+      *(outbuffer + offset + 0) = (u_range_max.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_range_max.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_range_max.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_range_max.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->range_max);
+      *(outbuffer + offset + 0) = (this->ranges_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->ranges_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->ranges_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->ranges_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->ranges_length);
+      for( uint32_t i = 0; i < ranges_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_rangesi;
+      u_rangesi.real = this->ranges[i];
+      *(outbuffer + offset + 0) = (u_rangesi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_rangesi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_rangesi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_rangesi.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->ranges[i]);
+      }
+      *(outbuffer + offset + 0) = (this->intensities_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->intensities_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->intensities_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->intensities_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->intensities_length);
+      for( uint32_t i = 0; i < intensities_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_intensitiesi;
+      u_intensitiesi.real = this->intensities[i];
+      *(outbuffer + offset + 0) = (u_intensitiesi.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_intensitiesi.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_intensitiesi.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_intensitiesi.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->intensities[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_angle_min;
+      u_angle_min.base = 0;
+      u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->angle_min = u_angle_min.real;
+      offset += sizeof(this->angle_min);
+      union {
+        float real;
+        uint32_t base;
+      } u_angle_max;
+      u_angle_max.base = 0;
+      u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->angle_max = u_angle_max.real;
+      offset += sizeof(this->angle_max);
+      union {
+        float real;
+        uint32_t base;
+      } u_angle_increment;
+      u_angle_increment.base = 0;
+      u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->angle_increment = u_angle_increment.real;
+      offset += sizeof(this->angle_increment);
+      union {
+        float real;
+        uint32_t base;
+      } u_time_increment;
+      u_time_increment.base = 0;
+      u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->time_increment = u_time_increment.real;
+      offset += sizeof(this->time_increment);
+      union {
+        float real;
+        uint32_t base;
+      } u_scan_time;
+      u_scan_time.base = 0;
+      u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->scan_time = u_scan_time.real;
+      offset += sizeof(this->scan_time);
+      union {
+        float real;
+        uint32_t base;
+      } u_range_min;
+      u_range_min.base = 0;
+      u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->range_min = u_range_min.real;
+      offset += sizeof(this->range_min);
+      union {
+        float real;
+        uint32_t base;
+      } u_range_max;
+      u_range_max.base = 0;
+      u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->range_max = u_range_max.real;
+      offset += sizeof(this->range_max);
+      uint32_t ranges_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->ranges_length);
+      if(ranges_lengthT > ranges_length)
+        this->ranges = (float*)realloc(this->ranges, ranges_lengthT * sizeof(float));
+      ranges_length = ranges_lengthT;
+      for( uint32_t i = 0; i < ranges_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_st_ranges;
+      u_st_ranges.base = 0;
+      u_st_ranges.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_ranges.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_ranges.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_ranges.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_ranges = u_st_ranges.real;
+      offset += sizeof(this->st_ranges);
+        memcpy( &(this->ranges[i]), &(this->st_ranges), sizeof(float));
+      }
+      uint32_t intensities_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->intensities_length);
+      if(intensities_lengthT > intensities_length)
+        this->intensities = (float*)realloc(this->intensities, intensities_lengthT * sizeof(float));
+      intensities_length = intensities_lengthT;
+      for( uint32_t i = 0; i < intensities_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_st_intensities;
+      u_st_intensities.base = 0;
+      u_st_intensities.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_intensities.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_intensities.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_intensities.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_intensities = u_st_intensities.real;
+      offset += sizeof(this->st_intensities);
+        memcpy( &(this->intensities[i]), &(this->st_intensities), sizeof(float));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/LaserScan"; };
+    const char * getMD5(){ return "90c7ef2dc6895d81024acba2ac42f369"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/MagneticField.h b/otto_controller_source/Inc/sensor_msgs/MagneticField.h
new file mode 100644 (file)
index 0000000..12d12ca
--- /dev/null
@@ -0,0 +1,58 @@
+#ifndef _ROS_sensor_msgs_MagneticField_h
+#define _ROS_sensor_msgs_MagneticField_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Vector3.h"
+
+namespace sensor_msgs
+{
+
+  class MagneticField : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Vector3 _magnetic_field_type;
+      _magnetic_field_type magnetic_field;
+      float magnetic_field_covariance[9];
+
+    MagneticField():
+      header(),
+      magnetic_field(),
+      magnetic_field_covariance()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->magnetic_field.serialize(outbuffer + offset);
+      for( uint32_t i = 0; i < 9; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->magnetic_field_covariance[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->magnetic_field.deserialize(inbuffer + offset);
+      for( uint32_t i = 0; i < 9; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->magnetic_field_covariance[i]));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/MagneticField"; };
+    const char * getMD5(){ return "2f3b0b43eed0c9501de0fa3ff89a45aa"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/MultiDOFJointState.h b/otto_controller_source/Inc/sensor_msgs/MultiDOFJointState.h
new file mode 100644 (file)
index 0000000..6e38c3d
--- /dev/null
@@ -0,0 +1,159 @@
+#ifndef _ROS_sensor_msgs_MultiDOFJointState_h
+#define _ROS_sensor_msgs_MultiDOFJointState_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Transform.h"
+#include "geometry_msgs/Twist.h"
+#include "geometry_msgs/Wrench.h"
+
+namespace sensor_msgs
+{
+
+  class MultiDOFJointState : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t joint_names_length;
+      typedef char* _joint_names_type;
+      _joint_names_type st_joint_names;
+      _joint_names_type * joint_names;
+      uint32_t transforms_length;
+      typedef geometry_msgs::Transform _transforms_type;
+      _transforms_type st_transforms;
+      _transforms_type * transforms;
+      uint32_t twist_length;
+      typedef geometry_msgs::Twist _twist_type;
+      _twist_type st_twist;
+      _twist_type * twist;
+      uint32_t wrench_length;
+      typedef geometry_msgs::Wrench _wrench_type;
+      _wrench_type st_wrench;
+      _wrench_type * wrench;
+
+    MultiDOFJointState():
+      header(),
+      joint_names_length(0), joint_names(NULL),
+      transforms_length(0), transforms(NULL),
+      twist_length(0), twist(NULL),
+      wrench_length(0), wrench(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->joint_names_length);
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_joint_namesi = strlen(this->joint_names[i]);
+      varToArr(outbuffer + offset, length_joint_namesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi);
+      offset += length_joint_namesi;
+      }
+      *(outbuffer + offset + 0) = (this->transforms_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->transforms_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->transforms_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->transforms_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->transforms_length);
+      for( uint32_t i = 0; i < transforms_length; i++){
+      offset += this->transforms[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->twist_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->twist_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->twist_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->twist_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->twist_length);
+      for( uint32_t i = 0; i < twist_length; i++){
+      offset += this->twist[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->wrench_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->wrench_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->wrench_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->wrench_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->wrench_length);
+      for( uint32_t i = 0; i < wrench_length; i++){
+      offset += this->wrench[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->joint_names_length);
+      if(joint_names_lengthT > joint_names_length)
+        this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*));
+      joint_names_length = joint_names_lengthT;
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_st_joint_names;
+      arrToVar(length_st_joint_names, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_joint_names-1]=0;
+      this->st_joint_names = (char *)(inbuffer + offset-1);
+      offset += length_st_joint_names;
+        memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*));
+      }
+      uint32_t transforms_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->transforms_length);
+      if(transforms_lengthT > transforms_length)
+        this->transforms = (geometry_msgs::Transform*)realloc(this->transforms, transforms_lengthT * sizeof(geometry_msgs::Transform));
+      transforms_length = transforms_lengthT;
+      for( uint32_t i = 0; i < transforms_length; i++){
+      offset += this->st_transforms.deserialize(inbuffer + offset);
+        memcpy( &(this->transforms[i]), &(this->st_transforms), sizeof(geometry_msgs::Transform));
+      }
+      uint32_t twist_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      twist_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->twist_length);
+      if(twist_lengthT > twist_length)
+        this->twist = (geometry_msgs::Twist*)realloc(this->twist, twist_lengthT * sizeof(geometry_msgs::Twist));
+      twist_length = twist_lengthT;
+      for( uint32_t i = 0; i < twist_length; i++){
+      offset += this->st_twist.deserialize(inbuffer + offset);
+        memcpy( &(this->twist[i]), &(this->st_twist), sizeof(geometry_msgs::Twist));
+      }
+      uint32_t wrench_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      wrench_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->wrench_length);
+      if(wrench_lengthT > wrench_length)
+        this->wrench = (geometry_msgs::Wrench*)realloc(this->wrench, wrench_lengthT * sizeof(geometry_msgs::Wrench));
+      wrench_length = wrench_lengthT;
+      for( uint32_t i = 0; i < wrench_length; i++){
+      offset += this->st_wrench.deserialize(inbuffer + offset);
+        memcpy( &(this->wrench[i]), &(this->st_wrench), sizeof(geometry_msgs::Wrench));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/MultiDOFJointState"; };
+    const char * getMD5(){ return "690f272f0640d2631c305eeb8301e59d"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/MultiEchoLaserScan.h b/otto_controller_source/Inc/sensor_msgs/MultiEchoLaserScan.h
new file mode 100644 (file)
index 0000000..007157b
--- /dev/null
@@ -0,0 +1,263 @@
+#ifndef _ROS_sensor_msgs_MultiEchoLaserScan_h
+#define _ROS_sensor_msgs_MultiEchoLaserScan_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "sensor_msgs/LaserEcho.h"
+
+namespace sensor_msgs
+{
+
+  class MultiEchoLaserScan : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef float _angle_min_type;
+      _angle_min_type angle_min;
+      typedef float _angle_max_type;
+      _angle_max_type angle_max;
+      typedef float _angle_increment_type;
+      _angle_increment_type angle_increment;
+      typedef float _time_increment_type;
+      _time_increment_type time_increment;
+      typedef float _scan_time_type;
+      _scan_time_type scan_time;
+      typedef float _range_min_type;
+      _range_min_type range_min;
+      typedef float _range_max_type;
+      _range_max_type range_max;
+      uint32_t ranges_length;
+      typedef sensor_msgs::LaserEcho _ranges_type;
+      _ranges_type st_ranges;
+      _ranges_type * ranges;
+      uint32_t intensities_length;
+      typedef sensor_msgs::LaserEcho _intensities_type;
+      _intensities_type st_intensities;
+      _intensities_type * intensities;
+
+    MultiEchoLaserScan():
+      header(),
+      angle_min(0),
+      angle_max(0),
+      angle_increment(0),
+      time_increment(0),
+      scan_time(0),
+      range_min(0),
+      range_max(0),
+      ranges_length(0), ranges(NULL),
+      intensities_length(0), intensities(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_angle_min;
+      u_angle_min.real = this->angle_min;
+      *(outbuffer + offset + 0) = (u_angle_min.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_angle_min.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_angle_min.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_angle_min.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->angle_min);
+      union {
+        float real;
+        uint32_t base;
+      } u_angle_max;
+      u_angle_max.real = this->angle_max;
+      *(outbuffer + offset + 0) = (u_angle_max.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_angle_max.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_angle_max.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_angle_max.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->angle_max);
+      union {
+        float real;
+        uint32_t base;
+      } u_angle_increment;
+      u_angle_increment.real = this->angle_increment;
+      *(outbuffer + offset + 0) = (u_angle_increment.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_angle_increment.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_angle_increment.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_angle_increment.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->angle_increment);
+      union {
+        float real;
+        uint32_t base;
+      } u_time_increment;
+      u_time_increment.real = this->time_increment;
+      *(outbuffer + offset + 0) = (u_time_increment.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_time_increment.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_time_increment.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_time_increment.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->time_increment);
+      union {
+        float real;
+        uint32_t base;
+      } u_scan_time;
+      u_scan_time.real = this->scan_time;
+      *(outbuffer + offset + 0) = (u_scan_time.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_scan_time.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_scan_time.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_scan_time.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->scan_time);
+      union {
+        float real;
+        uint32_t base;
+      } u_range_min;
+      u_range_min.real = this->range_min;
+      *(outbuffer + offset + 0) = (u_range_min.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_range_min.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_range_min.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_range_min.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->range_min);
+      union {
+        float real;
+        uint32_t base;
+      } u_range_max;
+      u_range_max.real = this->range_max;
+      *(outbuffer + offset + 0) = (u_range_max.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_range_max.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_range_max.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_range_max.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->range_max);
+      *(outbuffer + offset + 0) = (this->ranges_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->ranges_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->ranges_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->ranges_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->ranges_length);
+      for( uint32_t i = 0; i < ranges_length; i++){
+      offset += this->ranges[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->intensities_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->intensities_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->intensities_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->intensities_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->intensities_length);
+      for( uint32_t i = 0; i < intensities_length; i++){
+      offset += this->intensities[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_angle_min;
+      u_angle_min.base = 0;
+      u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_angle_min.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->angle_min = u_angle_min.real;
+      offset += sizeof(this->angle_min);
+      union {
+        float real;
+        uint32_t base;
+      } u_angle_max;
+      u_angle_max.base = 0;
+      u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_angle_max.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->angle_max = u_angle_max.real;
+      offset += sizeof(this->angle_max);
+      union {
+        float real;
+        uint32_t base;
+      } u_angle_increment;
+      u_angle_increment.base = 0;
+      u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_angle_increment.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->angle_increment = u_angle_increment.real;
+      offset += sizeof(this->angle_increment);
+      union {
+        float real;
+        uint32_t base;
+      } u_time_increment;
+      u_time_increment.base = 0;
+      u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_time_increment.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->time_increment = u_time_increment.real;
+      offset += sizeof(this->time_increment);
+      union {
+        float real;
+        uint32_t base;
+      } u_scan_time;
+      u_scan_time.base = 0;
+      u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_scan_time.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->scan_time = u_scan_time.real;
+      offset += sizeof(this->scan_time);
+      union {
+        float real;
+        uint32_t base;
+      } u_range_min;
+      u_range_min.base = 0;
+      u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_range_min.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->range_min = u_range_min.real;
+      offset += sizeof(this->range_min);
+      union {
+        float real;
+        uint32_t base;
+      } u_range_max;
+      u_range_max.base = 0;
+      u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_range_max.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->range_max = u_range_max.real;
+      offset += sizeof(this->range_max);
+      uint32_t ranges_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      ranges_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->ranges_length);
+      if(ranges_lengthT > ranges_length)
+        this->ranges = (sensor_msgs::LaserEcho*)realloc(this->ranges, ranges_lengthT * sizeof(sensor_msgs::LaserEcho));
+      ranges_length = ranges_lengthT;
+      for( uint32_t i = 0; i < ranges_length; i++){
+      offset += this->st_ranges.deserialize(inbuffer + offset);
+        memcpy( &(this->ranges[i]), &(this->st_ranges), sizeof(sensor_msgs::LaserEcho));
+      }
+      uint32_t intensities_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      intensities_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->intensities_length);
+      if(intensities_lengthT > intensities_length)
+        this->intensities = (sensor_msgs::LaserEcho*)realloc(this->intensities, intensities_lengthT * sizeof(sensor_msgs::LaserEcho));
+      intensities_length = intensities_lengthT;
+      for( uint32_t i = 0; i < intensities_length; i++){
+      offset += this->st_intensities.deserialize(inbuffer + offset);
+        memcpy( &(this->intensities[i]), &(this->st_intensities), sizeof(sensor_msgs::LaserEcho));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/MultiEchoLaserScan"; };
+    const char * getMD5(){ return "6fefb0c6da89d7c8abe4b339f5c2f8fb"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/NavSatFix.h b/otto_controller_source/Inc/sensor_msgs/NavSatFix.h
new file mode 100644 (file)
index 0000000..65d5a5e
--- /dev/null
@@ -0,0 +1,84 @@
+#ifndef _ROS_sensor_msgs_NavSatFix_h
+#define _ROS_sensor_msgs_NavSatFix_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "sensor_msgs/NavSatStatus.h"
+
+namespace sensor_msgs
+{
+
+  class NavSatFix : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef sensor_msgs::NavSatStatus _status_type;
+      _status_type status;
+      typedef float _latitude_type;
+      _latitude_type latitude;
+      typedef float _longitude_type;
+      _longitude_type longitude;
+      typedef float _altitude_type;
+      _altitude_type altitude;
+      float position_covariance[9];
+      typedef uint8_t _position_covariance_type_type;
+      _position_covariance_type_type position_covariance_type;
+      enum { COVARIANCE_TYPE_UNKNOWN =  0 };
+      enum { COVARIANCE_TYPE_APPROXIMATED =  1 };
+      enum { COVARIANCE_TYPE_DIAGONAL_KNOWN =  2 };
+      enum { COVARIANCE_TYPE_KNOWN =  3 };
+
+    NavSatFix():
+      header(),
+      status(),
+      latitude(0),
+      longitude(0),
+      altitude(0),
+      position_covariance(),
+      position_covariance_type(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += serializeAvrFloat64(outbuffer + offset, this->latitude);
+      offset += serializeAvrFloat64(outbuffer + offset, this->longitude);
+      offset += serializeAvrFloat64(outbuffer + offset, this->altitude);
+      for( uint32_t i = 0; i < 9; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->position_covariance[i]);
+      }
+      *(outbuffer + offset + 0) = (this->position_covariance_type >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->position_covariance_type);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->latitude));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->longitude));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->altitude));
+      for( uint32_t i = 0; i < 9; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->position_covariance[i]));
+      }
+      this->position_covariance_type =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->position_covariance_type);
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/NavSatFix"; };
+    const char * getMD5(){ return "2d3a8cd499b9b4a0249fb98fd05cfa48"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/NavSatStatus.h b/otto_controller_source/Inc/sensor_msgs/NavSatStatus.h
new file mode 100644 (file)
index 0000000..45e2a7c
--- /dev/null
@@ -0,0 +1,73 @@
+#ifndef _ROS_sensor_msgs_NavSatStatus_h
+#define _ROS_sensor_msgs_NavSatStatus_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace sensor_msgs
+{
+
+  class NavSatStatus : public ros::Msg
+  {
+    public:
+      typedef int8_t _status_type;
+      _status_type status;
+      typedef uint16_t _service_type;
+      _service_type service;
+      enum { STATUS_NO_FIX =   -1         };
+      enum { STATUS_FIX =       0         };
+      enum { STATUS_SBAS_FIX =  1         };
+      enum { STATUS_GBAS_FIX =  2         };
+      enum { SERVICE_GPS =      1 };
+      enum { SERVICE_GLONASS =  2 };
+      enum { SERVICE_COMPASS =  4       };
+      enum { SERVICE_GALILEO =  8 };
+
+    NavSatStatus():
+      status(0),
+      service(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_status;
+      u_status.real = this->status;
+      *(outbuffer + offset + 0) = (u_status.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->status);
+      *(outbuffer + offset + 0) = (this->service >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->service >> (8 * 1)) & 0xFF;
+      offset += sizeof(this->service);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_status;
+      u_status.base = 0;
+      u_status.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->status = u_status.real;
+      offset += sizeof(this->status);
+      this->service =  ((uint16_t) (*(inbuffer + offset)));
+      this->service |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      offset += sizeof(this->service);
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/NavSatStatus"; };
+    const char * getMD5(){ return "331cdbddfa4bc96ffc3b9ad98900a54c"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/PointCloud.h b/otto_controller_source/Inc/sensor_msgs/PointCloud.h
new file mode 100644 (file)
index 0000000..c18892b
--- /dev/null
@@ -0,0 +1,96 @@
+#ifndef _ROS_sensor_msgs_PointCloud_h
+#define _ROS_sensor_msgs_PointCloud_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Point32.h"
+#include "sensor_msgs/ChannelFloat32.h"
+
+namespace sensor_msgs
+{
+
+  class PointCloud : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t points_length;
+      typedef geometry_msgs::Point32 _points_type;
+      _points_type st_points;
+      _points_type * points;
+      uint32_t channels_length;
+      typedef sensor_msgs::ChannelFloat32 _channels_type;
+      _channels_type st_channels;
+      _channels_type * channels;
+
+    PointCloud():
+      header(),
+      points_length(0), points(NULL),
+      channels_length(0), channels(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->points_length);
+      for( uint32_t i = 0; i < points_length; i++){
+      offset += this->points[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->channels_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->channels_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->channels_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->channels_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->channels_length);
+      for( uint32_t i = 0; i < channels_length; i++){
+      offset += this->channels[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->points_length);
+      if(points_lengthT > points_length)
+        this->points = (geometry_msgs::Point32*)realloc(this->points, points_lengthT * sizeof(geometry_msgs::Point32));
+      points_length = points_lengthT;
+      for( uint32_t i = 0; i < points_length; i++){
+      offset += this->st_points.deserialize(inbuffer + offset);
+        memcpy( &(this->points[i]), &(this->st_points), sizeof(geometry_msgs::Point32));
+      }
+      uint32_t channels_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      channels_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      channels_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      channels_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->channels_length);
+      if(channels_lengthT > channels_length)
+        this->channels = (sensor_msgs::ChannelFloat32*)realloc(this->channels, channels_lengthT * sizeof(sensor_msgs::ChannelFloat32));
+      channels_length = channels_lengthT;
+      for( uint32_t i = 0; i < channels_length; i++){
+      offset += this->st_channels.deserialize(inbuffer + offset);
+        memcpy( &(this->channels[i]), &(this->st_channels), sizeof(sensor_msgs::ChannelFloat32));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/PointCloud"; };
+    const char * getMD5(){ return "d8e9c3f5afbdd8a130fd1d2763945fca"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/PointCloud2.h b/otto_controller_source/Inc/sensor_msgs/PointCloud2.h
new file mode 100644 (file)
index 0000000..7f1ccb4
--- /dev/null
@@ -0,0 +1,185 @@
+#ifndef _ROS_sensor_msgs_PointCloud2_h
+#define _ROS_sensor_msgs_PointCloud2_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "sensor_msgs/PointField.h"
+
+namespace sensor_msgs
+{
+
+  class PointCloud2 : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef uint32_t _height_type;
+      _height_type height;
+      typedef uint32_t _width_type;
+      _width_type width;
+      uint32_t fields_length;
+      typedef sensor_msgs::PointField _fields_type;
+      _fields_type st_fields;
+      _fields_type * fields;
+      typedef bool _is_bigendian_type;
+      _is_bigendian_type is_bigendian;
+      typedef uint32_t _point_step_type;
+      _point_step_type point_step;
+      typedef uint32_t _row_step_type;
+      _row_step_type row_step;
+      uint32_t data_length;
+      typedef uint8_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+      typedef bool _is_dense_type;
+      _is_dense_type is_dense;
+
+    PointCloud2():
+      header(),
+      height(0),
+      width(0),
+      fields_length(0), fields(NULL),
+      is_bigendian(0),
+      point_step(0),
+      row_step(0),
+      data_length(0), data(NULL),
+      is_dense(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->height);
+      *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->width);
+      *(outbuffer + offset + 0) = (this->fields_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->fields_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->fields_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->fields_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->fields_length);
+      for( uint32_t i = 0; i < fields_length; i++){
+      offset += this->fields[i].serialize(outbuffer + offset);
+      }
+      union {
+        bool real;
+        uint8_t base;
+      } u_is_bigendian;
+      u_is_bigendian.real = this->is_bigendian;
+      *(outbuffer + offset + 0) = (u_is_bigendian.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->is_bigendian);
+      *(outbuffer + offset + 0) = (this->point_step >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->point_step >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->point_step >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->point_step >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->point_step);
+      *(outbuffer + offset + 0) = (this->row_step >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->row_step >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->row_step >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->row_step >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->row_step);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      union {
+        bool real;
+        uint8_t base;
+      } u_is_dense;
+      u_is_dense.real = this->is_dense;
+      *(outbuffer + offset + 0) = (u_is_dense.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->is_dense);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      this->height =  ((uint32_t) (*(inbuffer + offset)));
+      this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->height);
+      this->width =  ((uint32_t) (*(inbuffer + offset)));
+      this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->width);
+      uint32_t fields_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      fields_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      fields_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      fields_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->fields_length);
+      if(fields_lengthT > fields_length)
+        this->fields = (sensor_msgs::PointField*)realloc(this->fields, fields_lengthT * sizeof(sensor_msgs::PointField));
+      fields_length = fields_lengthT;
+      for( uint32_t i = 0; i < fields_length; i++){
+      offset += this->st_fields.deserialize(inbuffer + offset);
+        memcpy( &(this->fields[i]), &(this->st_fields), sizeof(sensor_msgs::PointField));
+      }
+      union {
+        bool real;
+        uint8_t base;
+      } u_is_bigendian;
+      u_is_bigendian.base = 0;
+      u_is_bigendian.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->is_bigendian = u_is_bigendian.real;
+      offset += sizeof(this->is_bigendian);
+      this->point_step =  ((uint32_t) (*(inbuffer + offset)));
+      this->point_step |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->point_step |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->point_step |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->point_step);
+      this->row_step =  ((uint32_t) (*(inbuffer + offset)));
+      this->row_step |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->row_step |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->row_step |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->row_step);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      this->st_data =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t));
+      }
+      union {
+        bool real;
+        uint8_t base;
+      } u_is_dense;
+      u_is_dense.base = 0;
+      u_is_dense.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->is_dense = u_is_dense.real;
+      offset += sizeof(this->is_dense);
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/PointCloud2"; };
+    const char * getMD5(){ return "1158d486dd51d683ce2f1be655c3c181"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/PointField.h b/otto_controller_source/Inc/sensor_msgs/PointField.h
new file mode 100644 (file)
index 0000000..2db22d6
--- /dev/null
@@ -0,0 +1,96 @@
+#ifndef _ROS_sensor_msgs_PointField_h
+#define _ROS_sensor_msgs_PointField_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace sensor_msgs
+{
+
+  class PointField : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef uint32_t _offset_type;
+      _offset_type offset;
+      typedef uint8_t _datatype_type;
+      _datatype_type datatype;
+      typedef uint32_t _count_type;
+      _count_type count;
+      enum { INT8 =  1 };
+      enum { UINT8 =  2 };
+      enum { INT16 =  3 };
+      enum { UINT16 =  4 };
+      enum { INT32 =  5 };
+      enum { UINT32 =  6 };
+      enum { FLOAT32 =  7 };
+      enum { FLOAT64 =  8 };
+
+    PointField():
+      name(""),
+      offset(0),
+      datatype(0),
+      count(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      *(outbuffer + offset + 0) = (this->offset >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->offset >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->offset >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->offset >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->offset);
+      *(outbuffer + offset + 0) = (this->datatype >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->datatype);
+      *(outbuffer + offset + 0) = (this->count >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->count >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->count >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->count >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->count);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      this->offset =  ((uint32_t) (*(inbuffer + offset)));
+      this->offset |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->offset |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->offset |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->offset);
+      this->datatype =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->datatype);
+      this->count =  ((uint32_t) (*(inbuffer + offset)));
+      this->count |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->count |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->count |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->count);
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/PointField"; };
+    const char * getMD5(){ return "268eacb2962780ceac86cbd17e328150"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/Range.h b/otto_controller_source/Inc/sensor_msgs/Range.h
new file mode 100644 (file)
index 0000000..db9e22e
--- /dev/null
@@ -0,0 +1,149 @@
+#ifndef _ROS_sensor_msgs_Range_h
+#define _ROS_sensor_msgs_Range_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace sensor_msgs
+{
+
+  class Range : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef uint8_t _radiation_type_type;
+      _radiation_type_type radiation_type;
+      typedef float _field_of_view_type;
+      _field_of_view_type field_of_view;
+      typedef float _min_range_type;
+      _min_range_type min_range;
+      typedef float _max_range_type;
+      _max_range_type max_range;
+      typedef float _range_type;
+      _range_type range;
+      enum { ULTRASOUND = 0 };
+      enum { INFRARED = 1 };
+
+    Range():
+      header(),
+      radiation_type(0),
+      field_of_view(0),
+      min_range(0),
+      max_range(0),
+      range(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->radiation_type >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->radiation_type);
+      union {
+        float real;
+        uint32_t base;
+      } u_field_of_view;
+      u_field_of_view.real = this->field_of_view;
+      *(outbuffer + offset + 0) = (u_field_of_view.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_field_of_view.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_field_of_view.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_field_of_view.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->field_of_view);
+      union {
+        float real;
+        uint32_t base;
+      } u_min_range;
+      u_min_range.real = this->min_range;
+      *(outbuffer + offset + 0) = (u_min_range.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_min_range.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_min_range.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_min_range.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->min_range);
+      union {
+        float real;
+        uint32_t base;
+      } u_max_range;
+      u_max_range.real = this->max_range;
+      *(outbuffer + offset + 0) = (u_max_range.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_max_range.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_max_range.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_max_range.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->max_range);
+      union {
+        float real;
+        uint32_t base;
+      } u_range;
+      u_range.real = this->range;
+      *(outbuffer + offset + 0) = (u_range.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_range.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_range.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_range.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->range);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      this->radiation_type =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->radiation_type);
+      union {
+        float real;
+        uint32_t base;
+      } u_field_of_view;
+      u_field_of_view.base = 0;
+      u_field_of_view.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_field_of_view.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_field_of_view.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_field_of_view.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->field_of_view = u_field_of_view.real;
+      offset += sizeof(this->field_of_view);
+      union {
+        float real;
+        uint32_t base;
+      } u_min_range;
+      u_min_range.base = 0;
+      u_min_range.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_min_range.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_min_range.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_min_range.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->min_range = u_min_range.real;
+      offset += sizeof(this->min_range);
+      union {
+        float real;
+        uint32_t base;
+      } u_max_range;
+      u_max_range.base = 0;
+      u_max_range.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_max_range.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_max_range.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_max_range.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->max_range = u_max_range.real;
+      offset += sizeof(this->max_range);
+      union {
+        float real;
+        uint32_t base;
+      } u_range;
+      u_range.base = 0;
+      u_range.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_range.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_range.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_range.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->range = u_range.real;
+      offset += sizeof(this->range);
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/Range"; };
+    const char * getMD5(){ return "c005c34273dc426c67a020a87bc24148"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/RegionOfInterest.h b/otto_controller_source/Inc/sensor_msgs/RegionOfInterest.h
new file mode 100644 (file)
index 0000000..7b7df04
--- /dev/null
@@ -0,0 +1,108 @@
+#ifndef _ROS_sensor_msgs_RegionOfInterest_h
+#define _ROS_sensor_msgs_RegionOfInterest_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace sensor_msgs
+{
+
+  class RegionOfInterest : public ros::Msg
+  {
+    public:
+      typedef uint32_t _x_offset_type;
+      _x_offset_type x_offset;
+      typedef uint32_t _y_offset_type;
+      _y_offset_type y_offset;
+      typedef uint32_t _height_type;
+      _height_type height;
+      typedef uint32_t _width_type;
+      _width_type width;
+      typedef bool _do_rectify_type;
+      _do_rectify_type do_rectify;
+
+    RegionOfInterest():
+      x_offset(0),
+      y_offset(0),
+      height(0),
+      width(0),
+      do_rectify(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->x_offset >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->x_offset >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->x_offset >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->x_offset >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->x_offset);
+      *(outbuffer + offset + 0) = (this->y_offset >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->y_offset >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->y_offset >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->y_offset >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->y_offset);
+      *(outbuffer + offset + 0) = (this->height >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->height >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->height >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->height >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->height);
+      *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->width >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->width >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->width >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->width);
+      union {
+        bool real;
+        uint8_t base;
+      } u_do_rectify;
+      u_do_rectify.real = this->do_rectify;
+      *(outbuffer + offset + 0) = (u_do_rectify.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->do_rectify);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->x_offset =  ((uint32_t) (*(inbuffer + offset)));
+      this->x_offset |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->x_offset |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->x_offset |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->x_offset);
+      this->y_offset =  ((uint32_t) (*(inbuffer + offset)));
+      this->y_offset |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->y_offset |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->y_offset |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->y_offset);
+      this->height =  ((uint32_t) (*(inbuffer + offset)));
+      this->height |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->height |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->height |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->height);
+      this->width =  ((uint32_t) (*(inbuffer + offset)));
+      this->width |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->width |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->width |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->width);
+      union {
+        bool real;
+        uint8_t base;
+      } u_do_rectify;
+      u_do_rectify.base = 0;
+      u_do_rectify.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->do_rectify = u_do_rectify.real;
+      offset += sizeof(this->do_rectify);
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/RegionOfInterest"; };
+    const char * getMD5(){ return "bdb633039d588fcccb441a4d43ccfe09"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/RelativeHumidity.h b/otto_controller_source/Inc/sensor_msgs/RelativeHumidity.h
new file mode 100644 (file)
index 0000000..142c6a7
--- /dev/null
@@ -0,0 +1,54 @@
+#ifndef _ROS_sensor_msgs_RelativeHumidity_h
+#define _ROS_sensor_msgs_RelativeHumidity_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace sensor_msgs
+{
+
+  class RelativeHumidity : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef float _relative_humidity_type;
+      _relative_humidity_type relative_humidity;
+      typedef float _variance_type;
+      _variance_type variance;
+
+    RelativeHumidity():
+      header(),
+      relative_humidity(0),
+      variance(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += serializeAvrFloat64(outbuffer + offset, this->relative_humidity);
+      offset += serializeAvrFloat64(outbuffer + offset, this->variance);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->relative_humidity));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->variance));
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/RelativeHumidity"; };
+    const char * getMD5(){ return "8730015b05955b7e992ce29a2678d90f"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/SetCameraInfo.h b/otto_controller_source/Inc/sensor_msgs/SetCameraInfo.h
new file mode 100644 (file)
index 0000000..3f838fb
--- /dev/null
@@ -0,0 +1,111 @@
+#ifndef _ROS_SERVICE_SetCameraInfo_h
+#define _ROS_SERVICE_SetCameraInfo_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "sensor_msgs/CameraInfo.h"
+
+namespace sensor_msgs
+{
+
+static const char SETCAMERAINFO[] = "sensor_msgs/SetCameraInfo";
+
+  class SetCameraInfoRequest : public ros::Msg
+  {
+    public:
+      typedef sensor_msgs::CameraInfo _camera_info_type;
+      _camera_info_type camera_info;
+
+    SetCameraInfoRequest():
+      camera_info()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->camera_info.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->camera_info.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return SETCAMERAINFO; };
+    const char * getMD5(){ return "ee34be01fdeee563d0d99cd594d5581d"; };
+
+  };
+
+  class SetCameraInfoResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _status_message_type;
+      _status_message_type status_message;
+
+    SetCameraInfoResponse():
+      success(0),
+      status_message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_status_message = strlen(this->status_message);
+      varToArr(outbuffer + offset, length_status_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->status_message, length_status_message);
+      offset += length_status_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_status_message;
+      arrToVar(length_status_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_status_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_status_message-1]=0;
+      this->status_message = (char *)(inbuffer + offset-1);
+      offset += length_status_message;
+     return offset;
+    }
+
+    const char * getType(){ return SETCAMERAINFO; };
+    const char * getMD5(){ return "2ec6f3eff0161f4257b808b12bc830c2"; };
+
+  };
+
+  class SetCameraInfo {
+    public:
+    typedef SetCameraInfoRequest Request;
+    typedef SetCameraInfoResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/Temperature.h b/otto_controller_source/Inc/sensor_msgs/Temperature.h
new file mode 100644 (file)
index 0000000..961ff3c
--- /dev/null
@@ -0,0 +1,54 @@
+#ifndef _ROS_sensor_msgs_Temperature_h
+#define _ROS_sensor_msgs_Temperature_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace sensor_msgs
+{
+
+  class Temperature : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef float _temperature_type;
+      _temperature_type temperature;
+      typedef float _variance_type;
+      _variance_type variance;
+
+    Temperature():
+      header(),
+      temperature(0),
+      variance(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += serializeAvrFloat64(outbuffer + offset, this->temperature);
+      offset += serializeAvrFloat64(outbuffer + offset, this->variance);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->temperature));
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->variance));
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/Temperature"; };
+    const char * getMD5(){ return "ff71b307acdbe7c871a5a6d7ed359100"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/sensor_msgs/TimeReference.h b/otto_controller_source/Inc/sensor_msgs/TimeReference.h
new file mode 100644 (file)
index 0000000..dbb8a02
--- /dev/null
@@ -0,0 +1,85 @@
+#ifndef _ROS_sensor_msgs_TimeReference_h
+#define _ROS_sensor_msgs_TimeReference_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "ros/time.h"
+
+namespace sensor_msgs
+{
+
+  class TimeReference : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef ros::Time _time_ref_type;
+      _time_ref_type time_ref;
+      typedef const char* _source_type;
+      _source_type source;
+
+    TimeReference():
+      header(),
+      time_ref(),
+      source("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->time_ref.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->time_ref.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->time_ref.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->time_ref.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->time_ref.sec);
+      *(outbuffer + offset + 0) = (this->time_ref.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->time_ref.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->time_ref.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->time_ref.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->time_ref.nsec);
+      uint32_t length_source = strlen(this->source);
+      varToArr(outbuffer + offset, length_source);
+      offset += 4;
+      memcpy(outbuffer + offset, this->source, length_source);
+      offset += length_source;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      this->time_ref.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->time_ref.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->time_ref.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->time_ref.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->time_ref.sec);
+      this->time_ref.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->time_ref.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->time_ref.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->time_ref.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->time_ref.nsec);
+      uint32_t length_source;
+      arrToVar(length_source, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_source; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_source-1]=0;
+      this->source = (char *)(inbuffer + offset-1);
+      offset += length_source;
+     return offset;
+    }
+
+    const char * getType(){ return "sensor_msgs/TimeReference"; };
+    const char * getMD5(){ return "fded64a0265108ba86c3d38fb11c0c16"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/shape_msgs/Mesh.h b/otto_controller_source/Inc/shape_msgs/Mesh.h
new file mode 100644 (file)
index 0000000..d138e08
--- /dev/null
@@ -0,0 +1,90 @@
+#ifndef _ROS_shape_msgs_Mesh_h
+#define _ROS_shape_msgs_Mesh_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "shape_msgs/MeshTriangle.h"
+#include "geometry_msgs/Point.h"
+
+namespace shape_msgs
+{
+
+  class Mesh : public ros::Msg
+  {
+    public:
+      uint32_t triangles_length;
+      typedef shape_msgs::MeshTriangle _triangles_type;
+      _triangles_type st_triangles;
+      _triangles_type * triangles;
+      uint32_t vertices_length;
+      typedef geometry_msgs::Point _vertices_type;
+      _vertices_type st_vertices;
+      _vertices_type * vertices;
+
+    Mesh():
+      triangles_length(0), triangles(NULL),
+      vertices_length(0), vertices(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->triangles_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->triangles_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->triangles_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->triangles_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->triangles_length);
+      for( uint32_t i = 0; i < triangles_length; i++){
+      offset += this->triangles[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->vertices_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->vertices_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->vertices_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->vertices_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->vertices_length);
+      for( uint32_t i = 0; i < vertices_length; i++){
+      offset += this->vertices[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t triangles_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      triangles_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      triangles_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      triangles_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->triangles_length);
+      if(triangles_lengthT > triangles_length)
+        this->triangles = (shape_msgs::MeshTriangle*)realloc(this->triangles, triangles_lengthT * sizeof(shape_msgs::MeshTriangle));
+      triangles_length = triangles_lengthT;
+      for( uint32_t i = 0; i < triangles_length; i++){
+      offset += this->st_triangles.deserialize(inbuffer + offset);
+        memcpy( &(this->triangles[i]), &(this->st_triangles), sizeof(shape_msgs::MeshTriangle));
+      }
+      uint32_t vertices_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      vertices_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->vertices_length);
+      if(vertices_lengthT > vertices_length)
+        this->vertices = (geometry_msgs::Point*)realloc(this->vertices, vertices_lengthT * sizeof(geometry_msgs::Point));
+      vertices_length = vertices_lengthT;
+      for( uint32_t i = 0; i < vertices_length; i++){
+      offset += this->st_vertices.deserialize(inbuffer + offset);
+        memcpy( &(this->vertices[i]), &(this->st_vertices), sizeof(geometry_msgs::Point));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "shape_msgs/Mesh"; };
+    const char * getMD5(){ return "1ffdae9486cd3316a121c578b47a85cc"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/shape_msgs/MeshTriangle.h b/otto_controller_source/Inc/shape_msgs/MeshTriangle.h
new file mode 100644 (file)
index 0000000..d35ef55
--- /dev/null
@@ -0,0 +1,54 @@
+#ifndef _ROS_shape_msgs_MeshTriangle_h
+#define _ROS_shape_msgs_MeshTriangle_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace shape_msgs
+{
+
+  class MeshTriangle : public ros::Msg
+  {
+    public:
+      uint32_t vertex_indices[3];
+
+    MeshTriangle():
+      vertex_indices()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      for( uint32_t i = 0; i < 3; i++){
+      *(outbuffer + offset + 0) = (this->vertex_indices[i] >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->vertex_indices[i] >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->vertex_indices[i] >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->vertex_indices[i] >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->vertex_indices[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      for( uint32_t i = 0; i < 3; i++){
+      this->vertex_indices[i] =  ((uint32_t) (*(inbuffer + offset)));
+      this->vertex_indices[i] |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->vertex_indices[i] |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->vertex_indices[i] |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->vertex_indices[i]);
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "shape_msgs/MeshTriangle"; };
+    const char * getMD5(){ return "23688b2e6d2de3d32fe8af104a903253"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/shape_msgs/Plane.h b/otto_controller_source/Inc/shape_msgs/Plane.h
new file mode 100644 (file)
index 0000000..e148b44
--- /dev/null
@@ -0,0 +1,46 @@
+#ifndef _ROS_shape_msgs_Plane_h
+#define _ROS_shape_msgs_Plane_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace shape_msgs
+{
+
+  class Plane : public ros::Msg
+  {
+    public:
+      float coef[4];
+
+    Plane():
+      coef()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      for( uint32_t i = 0; i < 4; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->coef[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      for( uint32_t i = 0; i < 4; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->coef[i]));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "shape_msgs/Plane"; };
+    const char * getMD5(){ return "2c1b92ed8f31492f8e73f6a4a44ca796"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/shape_msgs/SolidPrimitive.h b/otto_controller_source/Inc/shape_msgs/SolidPrimitive.h
new file mode 100644 (file)
index 0000000..15c9e32
--- /dev/null
@@ -0,0 +1,82 @@
+#ifndef _ROS_shape_msgs_SolidPrimitive_h
+#define _ROS_shape_msgs_SolidPrimitive_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace shape_msgs
+{
+
+  class SolidPrimitive : public ros::Msg
+  {
+    public:
+      typedef uint8_t _type_type;
+      _type_type type;
+      uint32_t dimensions_length;
+      typedef float _dimensions_type;
+      _dimensions_type st_dimensions;
+      _dimensions_type * dimensions;
+      enum { BOX = 1 };
+      enum { SPHERE = 2 };
+      enum { CYLINDER = 3 };
+      enum { CONE = 4 };
+      enum { BOX_X = 0 };
+      enum { BOX_Y = 1 };
+      enum { BOX_Z = 2 };
+      enum { SPHERE_RADIUS = 0 };
+      enum { CYLINDER_HEIGHT = 0 };
+      enum { CYLINDER_RADIUS = 1 };
+      enum { CONE_HEIGHT = 0 };
+      enum { CONE_RADIUS = 1 };
+
+    SolidPrimitive():
+      type(0),
+      dimensions_length(0), dimensions(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->type);
+      *(outbuffer + offset + 0) = (this->dimensions_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->dimensions_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->dimensions_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->dimensions_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->dimensions_length);
+      for( uint32_t i = 0; i < dimensions_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->dimensions[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->type =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->type);
+      uint32_t dimensions_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      dimensions_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      dimensions_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      dimensions_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->dimensions_length);
+      if(dimensions_lengthT > dimensions_length)
+        this->dimensions = (float*)realloc(this->dimensions, dimensions_lengthT * sizeof(float));
+      dimensions_length = dimensions_lengthT;
+      for( uint32_t i = 0; i < dimensions_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_dimensions));
+        memcpy( &(this->dimensions[i]), &(this->st_dimensions), sizeof(float));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "shape_msgs/SolidPrimitive"; };
+    const char * getMD5(){ return "d8f8cbc74c5ff283fca29569ccefb45d"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/smach_msgs/SmachContainerInitialStatusCmd.h b/otto_controller_source/Inc/smach_msgs/SmachContainerInitialStatusCmd.h
new file mode 100644 (file)
index 0000000..d328eb8
--- /dev/null
@@ -0,0 +1,109 @@
+#ifndef _ROS_smach_msgs_SmachContainerInitialStatusCmd_h
+#define _ROS_smach_msgs_SmachContainerInitialStatusCmd_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace smach_msgs
+{
+
+  class SmachContainerInitialStatusCmd : public ros::Msg
+  {
+    public:
+      typedef const char* _path_type;
+      _path_type path;
+      uint32_t initial_states_length;
+      typedef char* _initial_states_type;
+      _initial_states_type st_initial_states;
+      _initial_states_type * initial_states;
+      typedef const char* _local_data_type;
+      _local_data_type local_data;
+
+    SmachContainerInitialStatusCmd():
+      path(""),
+      initial_states_length(0), initial_states(NULL),
+      local_data("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_path = strlen(this->path);
+      varToArr(outbuffer + offset, length_path);
+      offset += 4;
+      memcpy(outbuffer + offset, this->path, length_path);
+      offset += length_path;
+      *(outbuffer + offset + 0) = (this->initial_states_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->initial_states_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->initial_states_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->initial_states_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->initial_states_length);
+      for( uint32_t i = 0; i < initial_states_length; i++){
+      uint32_t length_initial_statesi = strlen(this->initial_states[i]);
+      varToArr(outbuffer + offset, length_initial_statesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->initial_states[i], length_initial_statesi);
+      offset += length_initial_statesi;
+      }
+      uint32_t length_local_data = strlen(this->local_data);
+      varToArr(outbuffer + offset, length_local_data);
+      offset += 4;
+      memcpy(outbuffer + offset, this->local_data, length_local_data);
+      offset += length_local_data;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_path;
+      arrToVar(length_path, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_path; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_path-1]=0;
+      this->path = (char *)(inbuffer + offset-1);
+      offset += length_path;
+      uint32_t initial_states_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->initial_states_length);
+      if(initial_states_lengthT > initial_states_length)
+        this->initial_states = (char**)realloc(this->initial_states, initial_states_lengthT * sizeof(char*));
+      initial_states_length = initial_states_lengthT;
+      for( uint32_t i = 0; i < initial_states_length; i++){
+      uint32_t length_st_initial_states;
+      arrToVar(length_st_initial_states, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_initial_states; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_initial_states-1]=0;
+      this->st_initial_states = (char *)(inbuffer + offset-1);
+      offset += length_st_initial_states;
+        memcpy( &(this->initial_states[i]), &(this->st_initial_states), sizeof(char*));
+      }
+      uint32_t length_local_data;
+      arrToVar(length_local_data, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_local_data; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_local_data-1]=0;
+      this->local_data = (char *)(inbuffer + offset-1);
+      offset += length_local_data;
+     return offset;
+    }
+
+    const char * getType(){ return "smach_msgs/SmachContainerInitialStatusCmd"; };
+    const char * getMD5(){ return "45f8cf31fc29b829db77f23001f788d6"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/smach_msgs/SmachContainerStatus.h b/otto_controller_source/Inc/smach_msgs/SmachContainerStatus.h
new file mode 100644 (file)
index 0000000..2c00cd3
--- /dev/null
@@ -0,0 +1,169 @@
+#ifndef _ROS_smach_msgs_SmachContainerStatus_h
+#define _ROS_smach_msgs_SmachContainerStatus_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace smach_msgs
+{
+
+  class SmachContainerStatus : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef const char* _path_type;
+      _path_type path;
+      uint32_t initial_states_length;
+      typedef char* _initial_states_type;
+      _initial_states_type st_initial_states;
+      _initial_states_type * initial_states;
+      uint32_t active_states_length;
+      typedef char* _active_states_type;
+      _active_states_type st_active_states;
+      _active_states_type * active_states;
+      typedef const char* _local_data_type;
+      _local_data_type local_data;
+      typedef const char* _info_type;
+      _info_type info;
+
+    SmachContainerStatus():
+      header(),
+      path(""),
+      initial_states_length(0), initial_states(NULL),
+      active_states_length(0), active_states(NULL),
+      local_data(""),
+      info("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      uint32_t length_path = strlen(this->path);
+      varToArr(outbuffer + offset, length_path);
+      offset += 4;
+      memcpy(outbuffer + offset, this->path, length_path);
+      offset += length_path;
+      *(outbuffer + offset + 0) = (this->initial_states_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->initial_states_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->initial_states_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->initial_states_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->initial_states_length);
+      for( uint32_t i = 0; i < initial_states_length; i++){
+      uint32_t length_initial_statesi = strlen(this->initial_states[i]);
+      varToArr(outbuffer + offset, length_initial_statesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->initial_states[i], length_initial_statesi);
+      offset += length_initial_statesi;
+      }
+      *(outbuffer + offset + 0) = (this->active_states_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->active_states_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->active_states_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->active_states_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->active_states_length);
+      for( uint32_t i = 0; i < active_states_length; i++){
+      uint32_t length_active_statesi = strlen(this->active_states[i]);
+      varToArr(outbuffer + offset, length_active_statesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->active_states[i], length_active_statesi);
+      offset += length_active_statesi;
+      }
+      uint32_t length_local_data = strlen(this->local_data);
+      varToArr(outbuffer + offset, length_local_data);
+      offset += 4;
+      memcpy(outbuffer + offset, this->local_data, length_local_data);
+      offset += length_local_data;
+      uint32_t length_info = strlen(this->info);
+      varToArr(outbuffer + offset, length_info);
+      offset += 4;
+      memcpy(outbuffer + offset, this->info, length_info);
+      offset += length_info;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t length_path;
+      arrToVar(length_path, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_path; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_path-1]=0;
+      this->path = (char *)(inbuffer + offset-1);
+      offset += length_path;
+      uint32_t initial_states_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      initial_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->initial_states_length);
+      if(initial_states_lengthT > initial_states_length)
+        this->initial_states = (char**)realloc(this->initial_states, initial_states_lengthT * sizeof(char*));
+      initial_states_length = initial_states_lengthT;
+      for( uint32_t i = 0; i < initial_states_length; i++){
+      uint32_t length_st_initial_states;
+      arrToVar(length_st_initial_states, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_initial_states; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_initial_states-1]=0;
+      this->st_initial_states = (char *)(inbuffer + offset-1);
+      offset += length_st_initial_states;
+        memcpy( &(this->initial_states[i]), &(this->st_initial_states), sizeof(char*));
+      }
+      uint32_t active_states_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      active_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      active_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      active_states_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->active_states_length);
+      if(active_states_lengthT > active_states_length)
+        this->active_states = (char**)realloc(this->active_states, active_states_lengthT * sizeof(char*));
+      active_states_length = active_states_lengthT;
+      for( uint32_t i = 0; i < active_states_length; i++){
+      uint32_t length_st_active_states;
+      arrToVar(length_st_active_states, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_active_states; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_active_states-1]=0;
+      this->st_active_states = (char *)(inbuffer + offset-1);
+      offset += length_st_active_states;
+        memcpy( &(this->active_states[i]), &(this->st_active_states), sizeof(char*));
+      }
+      uint32_t length_local_data;
+      arrToVar(length_local_data, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_local_data; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_local_data-1]=0;
+      this->local_data = (char *)(inbuffer + offset-1);
+      offset += length_local_data;
+      uint32_t length_info;
+      arrToVar(length_info, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_info; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_info-1]=0;
+      this->info = (char *)(inbuffer + offset-1);
+      offset += length_info;
+     return offset;
+    }
+
+    const char * getType(){ return "smach_msgs/SmachContainerStatus"; };
+    const char * getMD5(){ return "5ba2bb79ac19e3842d562a191f2a675b"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/smach_msgs/SmachContainerStructure.h b/otto_controller_source/Inc/smach_msgs/SmachContainerStructure.h
new file mode 100644 (file)
index 0000000..d0919ce
--- /dev/null
@@ -0,0 +1,246 @@
+#ifndef _ROS_smach_msgs_SmachContainerStructure_h
+#define _ROS_smach_msgs_SmachContainerStructure_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace smach_msgs
+{
+
+  class SmachContainerStructure : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef const char* _path_type;
+      _path_type path;
+      uint32_t children_length;
+      typedef char* _children_type;
+      _children_type st_children;
+      _children_type * children;
+      uint32_t internal_outcomes_length;
+      typedef char* _internal_outcomes_type;
+      _internal_outcomes_type st_internal_outcomes;
+      _internal_outcomes_type * internal_outcomes;
+      uint32_t outcomes_from_length;
+      typedef char* _outcomes_from_type;
+      _outcomes_from_type st_outcomes_from;
+      _outcomes_from_type * outcomes_from;
+      uint32_t outcomes_to_length;
+      typedef char* _outcomes_to_type;
+      _outcomes_to_type st_outcomes_to;
+      _outcomes_to_type * outcomes_to;
+      uint32_t container_outcomes_length;
+      typedef char* _container_outcomes_type;
+      _container_outcomes_type st_container_outcomes;
+      _container_outcomes_type * container_outcomes;
+
+    SmachContainerStructure():
+      header(),
+      path(""),
+      children_length(0), children(NULL),
+      internal_outcomes_length(0), internal_outcomes(NULL),
+      outcomes_from_length(0), outcomes_from(NULL),
+      outcomes_to_length(0), outcomes_to(NULL),
+      container_outcomes_length(0), container_outcomes(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      uint32_t length_path = strlen(this->path);
+      varToArr(outbuffer + offset, length_path);
+      offset += 4;
+      memcpy(outbuffer + offset, this->path, length_path);
+      offset += length_path;
+      *(outbuffer + offset + 0) = (this->children_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->children_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->children_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->children_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->children_length);
+      for( uint32_t i = 0; i < children_length; i++){
+      uint32_t length_childreni = strlen(this->children[i]);
+      varToArr(outbuffer + offset, length_childreni);
+      offset += 4;
+      memcpy(outbuffer + offset, this->children[i], length_childreni);
+      offset += length_childreni;
+      }
+      *(outbuffer + offset + 0) = (this->internal_outcomes_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->internal_outcomes_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->internal_outcomes_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->internal_outcomes_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->internal_outcomes_length);
+      for( uint32_t i = 0; i < internal_outcomes_length; i++){
+      uint32_t length_internal_outcomesi = strlen(this->internal_outcomes[i]);
+      varToArr(outbuffer + offset, length_internal_outcomesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->internal_outcomes[i], length_internal_outcomesi);
+      offset += length_internal_outcomesi;
+      }
+      *(outbuffer + offset + 0) = (this->outcomes_from_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->outcomes_from_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->outcomes_from_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->outcomes_from_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->outcomes_from_length);
+      for( uint32_t i = 0; i < outcomes_from_length; i++){
+      uint32_t length_outcomes_fromi = strlen(this->outcomes_from[i]);
+      varToArr(outbuffer + offset, length_outcomes_fromi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->outcomes_from[i], length_outcomes_fromi);
+      offset += length_outcomes_fromi;
+      }
+      *(outbuffer + offset + 0) = (this->outcomes_to_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->outcomes_to_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->outcomes_to_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->outcomes_to_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->outcomes_to_length);
+      for( uint32_t i = 0; i < outcomes_to_length; i++){
+      uint32_t length_outcomes_toi = strlen(this->outcomes_to[i]);
+      varToArr(outbuffer + offset, length_outcomes_toi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->outcomes_to[i], length_outcomes_toi);
+      offset += length_outcomes_toi;
+      }
+      *(outbuffer + offset + 0) = (this->container_outcomes_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->container_outcomes_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->container_outcomes_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->container_outcomes_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->container_outcomes_length);
+      for( uint32_t i = 0; i < container_outcomes_length; i++){
+      uint32_t length_container_outcomesi = strlen(this->container_outcomes[i]);
+      varToArr(outbuffer + offset, length_container_outcomesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->container_outcomes[i], length_container_outcomesi);
+      offset += length_container_outcomesi;
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t length_path;
+      arrToVar(length_path, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_path; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_path-1]=0;
+      this->path = (char *)(inbuffer + offset-1);
+      offset += length_path;
+      uint32_t children_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      children_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      children_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      children_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->children_length);
+      if(children_lengthT > children_length)
+        this->children = (char**)realloc(this->children, children_lengthT * sizeof(char*));
+      children_length = children_lengthT;
+      for( uint32_t i = 0; i < children_length; i++){
+      uint32_t length_st_children;
+      arrToVar(length_st_children, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_children; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_children-1]=0;
+      this->st_children = (char *)(inbuffer + offset-1);
+      offset += length_st_children;
+        memcpy( &(this->children[i]), &(this->st_children), sizeof(char*));
+      }
+      uint32_t internal_outcomes_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      internal_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      internal_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      internal_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->internal_outcomes_length);
+      if(internal_outcomes_lengthT > internal_outcomes_length)
+        this->internal_outcomes = (char**)realloc(this->internal_outcomes, internal_outcomes_lengthT * sizeof(char*));
+      internal_outcomes_length = internal_outcomes_lengthT;
+      for( uint32_t i = 0; i < internal_outcomes_length; i++){
+      uint32_t length_st_internal_outcomes;
+      arrToVar(length_st_internal_outcomes, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_internal_outcomes; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_internal_outcomes-1]=0;
+      this->st_internal_outcomes = (char *)(inbuffer + offset-1);
+      offset += length_st_internal_outcomes;
+        memcpy( &(this->internal_outcomes[i]), &(this->st_internal_outcomes), sizeof(char*));
+      }
+      uint32_t outcomes_from_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      outcomes_from_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      outcomes_from_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      outcomes_from_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->outcomes_from_length);
+      if(outcomes_from_lengthT > outcomes_from_length)
+        this->outcomes_from = (char**)realloc(this->outcomes_from, outcomes_from_lengthT * sizeof(char*));
+      outcomes_from_length = outcomes_from_lengthT;
+      for( uint32_t i = 0; i < outcomes_from_length; i++){
+      uint32_t length_st_outcomes_from;
+      arrToVar(length_st_outcomes_from, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_outcomes_from; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_outcomes_from-1]=0;
+      this->st_outcomes_from = (char *)(inbuffer + offset-1);
+      offset += length_st_outcomes_from;
+        memcpy( &(this->outcomes_from[i]), &(this->st_outcomes_from), sizeof(char*));
+      }
+      uint32_t outcomes_to_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      outcomes_to_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      outcomes_to_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      outcomes_to_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->outcomes_to_length);
+      if(outcomes_to_lengthT > outcomes_to_length)
+        this->outcomes_to = (char**)realloc(this->outcomes_to, outcomes_to_lengthT * sizeof(char*));
+      outcomes_to_length = outcomes_to_lengthT;
+      for( uint32_t i = 0; i < outcomes_to_length; i++){
+      uint32_t length_st_outcomes_to;
+      arrToVar(length_st_outcomes_to, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_outcomes_to; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_outcomes_to-1]=0;
+      this->st_outcomes_to = (char *)(inbuffer + offset-1);
+      offset += length_st_outcomes_to;
+        memcpy( &(this->outcomes_to[i]), &(this->st_outcomes_to), sizeof(char*));
+      }
+      uint32_t container_outcomes_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      container_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      container_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      container_outcomes_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->container_outcomes_length);
+      if(container_outcomes_lengthT > container_outcomes_length)
+        this->container_outcomes = (char**)realloc(this->container_outcomes, container_outcomes_lengthT * sizeof(char*));
+      container_outcomes_length = container_outcomes_lengthT;
+      for( uint32_t i = 0; i < container_outcomes_length; i++){
+      uint32_t length_st_container_outcomes;
+      arrToVar(length_st_container_outcomes, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_container_outcomes; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_container_outcomes-1]=0;
+      this->st_container_outcomes = (char *)(inbuffer + offset-1);
+      offset += length_st_container_outcomes;
+        memcpy( &(this->container_outcomes[i]), &(this->st_container_outcomes), sizeof(char*));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "smach_msgs/SmachContainerStructure"; };
+    const char * getMD5(){ return "3d3d1e0d0f99779ee9e58101a5dcf7ea"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/Bool.h b/otto_controller_source/Inc/std_msgs/Bool.h
new file mode 100644 (file)
index 0000000..9cfebb5
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_std_msgs_Bool_h
+#define _ROS_std_msgs_Bool_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class Bool : public ros::Msg
+  {
+    public:
+      typedef bool _data_type;
+      _data_type data;
+
+    Bool():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_data;
+      u_data.real = this->data;
+      *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_data;
+      u_data.base = 0;
+      u_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->data = u_data.real;
+      offset += sizeof(this->data);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Bool"; };
+    const char * getMD5(){ return "8b94c1b53db61fb6aed406028ad6332a"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/Byte.h b/otto_controller_source/Inc/std_msgs/Byte.h
new file mode 100644 (file)
index 0000000..ba06017
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_std_msgs_Byte_h
+#define _ROS_std_msgs_Byte_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class Byte : public ros::Msg
+  {
+    public:
+      typedef int8_t _data_type;
+      _data_type data;
+
+    Byte():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_data;
+      u_data.real = this->data;
+      *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_data;
+      u_data.base = 0;
+      u_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->data = u_data.real;
+      offset += sizeof(this->data);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Byte"; };
+    const char * getMD5(){ return "ad736a2e8818154c487bb80fe42ce43b"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/ByteMultiArray.h b/otto_controller_source/Inc/std_msgs/ByteMultiArray.h
new file mode 100644 (file)
index 0000000..51e72b0
--- /dev/null
@@ -0,0 +1,82 @@
+#ifndef _ROS_std_msgs_ByteMultiArray_h
+#define _ROS_std_msgs_ByteMultiArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/MultiArrayLayout.h"
+
+namespace std_msgs
+{
+
+  class ByteMultiArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::MultiArrayLayout _layout_type;
+      _layout_type layout;
+      uint32_t data_length;
+      typedef int8_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    ByteMultiArray():
+      layout(),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->layout.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_datai;
+      u_datai.real = this->data[i];
+      *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->layout.deserialize(inbuffer + offset);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (int8_t*)realloc(this->data, data_lengthT * sizeof(int8_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_st_data;
+      u_st_data.base = 0;
+      u_st_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->st_data = u_st_data.real;
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(int8_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/ByteMultiArray"; };
+    const char * getMD5(){ return "70ea476cbcfd65ac2f68f3cda1e891fe"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/Char.h b/otto_controller_source/Inc/std_msgs/Char.h
new file mode 100644 (file)
index 0000000..d705c4c
--- /dev/null
@@ -0,0 +1,45 @@
+#ifndef _ROS_std_msgs_Char_h
+#define _ROS_std_msgs_Char_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class Char : public ros::Msg
+  {
+    public:
+      typedef uint8_t _data_type;
+      _data_type data;
+
+    Char():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->data >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->data =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->data);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Char"; };
+    const char * getMD5(){ return "1bf77f25acecdedba0e224b162199717"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/ColorRGBA.h b/otto_controller_source/Inc/std_msgs/ColorRGBA.h
new file mode 100644 (file)
index 0000000..b692492
--- /dev/null
@@ -0,0 +1,134 @@
+#ifndef _ROS_std_msgs_ColorRGBA_h
+#define _ROS_std_msgs_ColorRGBA_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class ColorRGBA : public ros::Msg
+  {
+    public:
+      typedef float _r_type;
+      _r_type r;
+      typedef float _g_type;
+      _g_type g;
+      typedef float _b_type;
+      _b_type b;
+      typedef float _a_type;
+      _a_type a;
+
+    ColorRGBA():
+      r(0),
+      g(0),
+      b(0),
+      a(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_r;
+      u_r.real = this->r;
+      *(outbuffer + offset + 0) = (u_r.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_r.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_r.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_r.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->r);
+      union {
+        float real;
+        uint32_t base;
+      } u_g;
+      u_g.real = this->g;
+      *(outbuffer + offset + 0) = (u_g.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_g.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_g.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_g.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->g);
+      union {
+        float real;
+        uint32_t base;
+      } u_b;
+      u_b.real = this->b;
+      *(outbuffer + offset + 0) = (u_b.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_b.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_b.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_b.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->b);
+      union {
+        float real;
+        uint32_t base;
+      } u_a;
+      u_a.real = this->a;
+      *(outbuffer + offset + 0) = (u_a.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_a.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_a.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_a.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->a);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_r;
+      u_r.base = 0;
+      u_r.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_r.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_r.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_r.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->r = u_r.real;
+      offset += sizeof(this->r);
+      union {
+        float real;
+        uint32_t base;
+      } u_g;
+      u_g.base = 0;
+      u_g.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_g.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_g.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_g.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->g = u_g.real;
+      offset += sizeof(this->g);
+      union {
+        float real;
+        uint32_t base;
+      } u_b;
+      u_b.base = 0;
+      u_b.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_b.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_b.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_b.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->b = u_b.real;
+      offset += sizeof(this->b);
+      union {
+        float real;
+        uint32_t base;
+      } u_a;
+      u_a.base = 0;
+      u_a.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_a.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_a.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_a.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->a = u_a.real;
+      offset += sizeof(this->a);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/ColorRGBA"; };
+    const char * getMD5(){ return "a29a96539573343b1310c73607334b00"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/Duration.h b/otto_controller_source/Inc/std_msgs/Duration.h
new file mode 100644 (file)
index 0000000..7d65999
--- /dev/null
@@ -0,0 +1,62 @@
+#ifndef _ROS_std_msgs_Duration_h
+#define _ROS_std_msgs_Duration_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/duration.h"
+
+namespace std_msgs
+{
+
+  class Duration : public ros::Msg
+  {
+    public:
+      typedef ros::Duration _data_type;
+      _data_type data;
+
+    Duration():
+      data()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->data.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data.sec);
+      *(outbuffer + offset + 0) = (this->data.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->data.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->data.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->data.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->data.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->data.sec);
+      this->data.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->data.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Duration"; };
+    const char * getMD5(){ return "3e286caf4241d664e55f3ad380e2ae46"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/Empty.h b/otto_controller_source/Inc/std_msgs/Empty.h
new file mode 100644 (file)
index 0000000..16d0df4
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _ROS_std_msgs_Empty_h
+#define _ROS_std_msgs_Empty_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class Empty : public ros::Msg
+  {
+    public:
+
+    Empty()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Empty"; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/Float32.h b/otto_controller_source/Inc/std_msgs/Float32.h
new file mode 100644 (file)
index 0000000..fef15ff
--- /dev/null
@@ -0,0 +1,62 @@
+#ifndef _ROS_std_msgs_Float32_h
+#define _ROS_std_msgs_Float32_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class Float32 : public ros::Msg
+  {
+    public:
+      typedef float _data_type;
+      _data_type data;
+
+    Float32():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_data;
+      u_data.real = this->data;
+      *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_data;
+      u_data.base = 0;
+      u_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->data = u_data.real;
+      offset += sizeof(this->data);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Float32"; };
+    const char * getMD5(){ return "73fcbf46b49191e672908e50842a83d4"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/Float32MultiArray.h b/otto_controller_source/Inc/std_msgs/Float32MultiArray.h
new file mode 100644 (file)
index 0000000..eb8aba0
--- /dev/null
@@ -0,0 +1,88 @@
+#ifndef _ROS_std_msgs_Float32MultiArray_h
+#define _ROS_std_msgs_Float32MultiArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/MultiArrayLayout.h"
+
+namespace std_msgs
+{
+
+  class Float32MultiArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::MultiArrayLayout _layout_type;
+      _layout_type layout;
+      uint32_t data_length;
+      typedef float _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    Float32MultiArray():
+      layout(),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->layout.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_datai;
+      u_datai.real = this->data[i];
+      *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->layout.deserialize(inbuffer + offset);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (float*)realloc(this->data, data_lengthT * sizeof(float));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        float real;
+        uint32_t base;
+      } u_st_data;
+      u_st_data.base = 0;
+      u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_data = u_st_data.real;
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(float));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Float32MultiArray"; };
+    const char * getMD5(){ return "6a40e0ffa6a17a503ac3f8616991b1f6"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/Float64.h b/otto_controller_source/Inc/std_msgs/Float64.h
new file mode 100644 (file)
index 0000000..9aad358
--- /dev/null
@@ -0,0 +1,43 @@
+#ifndef _ROS_std_msgs_Float64_h
+#define _ROS_std_msgs_Float64_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class Float64 : public ros::Msg
+  {
+    public:
+      typedef float _data_type;
+      _data_type data;
+
+    Float64():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += serializeAvrFloat64(outbuffer + offset, this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->data));
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Float64"; };
+    const char * getMD5(){ return "fdb28210bfa9d7c91146260178d9a584"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/Float64MultiArray.h b/otto_controller_source/Inc/std_msgs/Float64MultiArray.h
new file mode 100644 (file)
index 0000000..297ef05
--- /dev/null
@@ -0,0 +1,69 @@
+#ifndef _ROS_std_msgs_Float64MultiArray_h
+#define _ROS_std_msgs_Float64MultiArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/MultiArrayLayout.h"
+
+namespace std_msgs
+{
+
+  class Float64MultiArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::MultiArrayLayout _layout_type;
+      _layout_type layout;
+      uint32_t data_length;
+      typedef float _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    Float64MultiArray():
+      layout(),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->layout.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->layout.deserialize(inbuffer + offset);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (float*)realloc(this->data, data_lengthT * sizeof(float));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_data));
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(float));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Float64MultiArray"; };
+    const char * getMD5(){ return "4b7d974086d4060e7db4613a7e6c3ba4"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/Header.h b/otto_controller_source/Inc/std_msgs/Header.h
new file mode 100644 (file)
index 0000000..f7b0944
--- /dev/null
@@ -0,0 +1,92 @@
+#ifndef _ROS_std_msgs_Header_h
+#define _ROS_std_msgs_Header_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/time.h"
+
+namespace std_msgs
+{
+
+  class Header : public ros::Msg
+  {
+    public:
+      typedef uint32_t _seq_type;
+      _seq_type seq;
+      typedef ros::Time _stamp_type;
+      _stamp_type stamp;
+      typedef const char* _frame_id_type;
+      _frame_id_type frame_id;
+
+    Header():
+      seq(0),
+      stamp(),
+      frame_id("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->seq >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->seq >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->seq >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->seq >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->seq);
+      *(outbuffer + offset + 0) = (this->stamp.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stamp.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stamp.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stamp.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stamp.sec);
+      *(outbuffer + offset + 0) = (this->stamp.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stamp.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stamp.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stamp.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stamp.nsec);
+      uint32_t length_frame_id = strlen(this->frame_id);
+      varToArr(outbuffer + offset, length_frame_id);
+      offset += 4;
+      memcpy(outbuffer + offset, this->frame_id, length_frame_id);
+      offset += length_frame_id;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->seq =  ((uint32_t) (*(inbuffer + offset)));
+      this->seq |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->seq |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->seq |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->seq);
+      this->stamp.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->stamp.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->stamp.sec);
+      this->stamp.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->stamp.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->stamp.nsec);
+      uint32_t length_frame_id;
+      arrToVar(length_frame_id, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_frame_id; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_frame_id-1]=0;
+      this->frame_id = (char *)(inbuffer + offset-1);
+      offset += length_frame_id;
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Header"; };
+    const char * getMD5(){ return "2176decaecbce78abc3b96ef049fabed"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/Int16.h b/otto_controller_source/Inc/std_msgs/Int16.h
new file mode 100644 (file)
index 0000000..a698660
--- /dev/null
@@ -0,0 +1,58 @@
+#ifndef _ROS_std_msgs_Int16_h
+#define _ROS_std_msgs_Int16_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class Int16 : public ros::Msg
+  {
+    public:
+      typedef int16_t _data_type;
+      _data_type data;
+
+    Int16():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int16_t real;
+        uint16_t base;
+      } u_data;
+      u_data.real = this->data;
+      *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF;
+      offset += sizeof(this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int16_t real;
+        uint16_t base;
+      } u_data;
+      u_data.base = 0;
+      u_data.base |= ((uint16_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_data.base |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->data = u_data.real;
+      offset += sizeof(this->data);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Int16"; };
+    const char * getMD5(){ return "8524586e34fbd7cb1c08c5f5f1ca0e57"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/Int16MultiArray.h b/otto_controller_source/Inc/std_msgs/Int16MultiArray.h
new file mode 100644 (file)
index 0000000..22ffaa5
--- /dev/null
@@ -0,0 +1,84 @@
+#ifndef _ROS_std_msgs_Int16MultiArray_h
+#define _ROS_std_msgs_Int16MultiArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/MultiArrayLayout.h"
+
+namespace std_msgs
+{
+
+  class Int16MultiArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::MultiArrayLayout _layout_type;
+      _layout_type layout;
+      uint32_t data_length;
+      typedef int16_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    Int16MultiArray():
+      layout(),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->layout.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int16_t real;
+        uint16_t base;
+      } u_datai;
+      u_datai.real = this->data[i];
+      *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->layout.deserialize(inbuffer + offset);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (int16_t*)realloc(this->data, data_lengthT * sizeof(int16_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int16_t real;
+        uint16_t base;
+      } u_st_data;
+      u_st_data.base = 0;
+      u_st_data.base |= ((uint16_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_data.base |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->st_data = u_st_data.real;
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(int16_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Int16MultiArray"; };
+    const char * getMD5(){ return "d9338d7f523fcb692fae9d0a0e9f067c"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/Int32.h b/otto_controller_source/Inc/std_msgs/Int32.h
new file mode 100644 (file)
index 0000000..5f4ed0c
--- /dev/null
@@ -0,0 +1,62 @@
+#ifndef _ROS_std_msgs_Int32_h
+#define _ROS_std_msgs_Int32_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class Int32 : public ros::Msg
+  {
+    public:
+      typedef int32_t _data_type;
+      _data_type data;
+
+    Int32():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_data;
+      u_data.real = this->data;
+      *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_data;
+      u_data.base = 0;
+      u_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->data = u_data.real;
+      offset += sizeof(this->data);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Int32"; };
+    const char * getMD5(){ return "da5909fbe378aeaf85e547e830cc1bb7"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/Int32MultiArray.h b/otto_controller_source/Inc/std_msgs/Int32MultiArray.h
new file mode 100644 (file)
index 0000000..30d1424
--- /dev/null
@@ -0,0 +1,88 @@
+#ifndef _ROS_std_msgs_Int32MultiArray_h
+#define _ROS_std_msgs_Int32MultiArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/MultiArrayLayout.h"
+
+namespace std_msgs
+{
+
+  class Int32MultiArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::MultiArrayLayout _layout_type;
+      _layout_type layout;
+      uint32_t data_length;
+      typedef int32_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    Int32MultiArray():
+      layout(),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->layout.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_datai;
+      u_datai.real = this->data[i];
+      *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->layout.deserialize(inbuffer + offset);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (int32_t*)realloc(this->data, data_lengthT * sizeof(int32_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_st_data;
+      u_st_data.base = 0;
+      u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_data.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_data = u_st_data.real;
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(int32_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Int32MultiArray"; };
+    const char * getMD5(){ return "1d99f79f8b325b44fee908053e9c945b"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/Int64.h b/otto_controller_source/Inc/std_msgs/Int64.h
new file mode 100644 (file)
index 0000000..ba99461
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef _ROS_std_msgs_Int64_h
+#define _ROS_std_msgs_Int64_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class Int64 : public ros::Msg
+  {
+    public:
+      typedef int64_t _data_type;
+      _data_type data;
+
+    Int64():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_data;
+      u_data.real = this->data;
+      *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_data.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_data.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_data.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_data.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_data.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_data.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_data.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_data;
+      u_data.base = 0;
+      u_data.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_data.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_data.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_data.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_data.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_data.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_data.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_data.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->data = u_data.real;
+      offset += sizeof(this->data);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Int64"; };
+    const char * getMD5(){ return "34add168574510e6e17f5d23ecc077ef"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/Int64MultiArray.h b/otto_controller_source/Inc/std_msgs/Int64MultiArray.h
new file mode 100644 (file)
index 0000000..cd0bcbb
--- /dev/null
@@ -0,0 +1,96 @@
+#ifndef _ROS_std_msgs_Int64MultiArray_h
+#define _ROS_std_msgs_Int64MultiArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/MultiArrayLayout.h"
+
+namespace std_msgs
+{
+
+  class Int64MultiArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::MultiArrayLayout _layout_type;
+      _layout_type layout;
+      uint32_t data_length;
+      typedef int64_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    Int64MultiArray():
+      layout(),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->layout.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_datai;
+      u_datai.real = this->data[i];
+      *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_datai.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_datai.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_datai.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_datai.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_datai.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_datai.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_datai.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->layout.deserialize(inbuffer + offset);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (int64_t*)realloc(this->data, data_lengthT * sizeof(int64_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_st_data;
+      u_st_data.base = 0;
+      u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_st_data.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->st_data = u_st_data.real;
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(int64_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Int64MultiArray"; };
+    const char * getMD5(){ return "54865aa6c65be0448113a2afc6a49270"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/Int8.h b/otto_controller_source/Inc/std_msgs/Int8.h
new file mode 100644 (file)
index 0000000..8c1f8e0
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_std_msgs_Int8_h
+#define _ROS_std_msgs_Int8_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class Int8 : public ros::Msg
+  {
+    public:
+      typedef int8_t _data_type;
+      _data_type data;
+
+    Int8():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_data;
+      u_data.real = this->data;
+      *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_data;
+      u_data.base = 0;
+      u_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->data = u_data.real;
+      offset += sizeof(this->data);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Int8"; };
+    const char * getMD5(){ return "27ffa0c9c4b8fb8492252bcad9e5c57b"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/Int8MultiArray.h b/otto_controller_source/Inc/std_msgs/Int8MultiArray.h
new file mode 100644 (file)
index 0000000..da14fc8
--- /dev/null
@@ -0,0 +1,82 @@
+#ifndef _ROS_std_msgs_Int8MultiArray_h
+#define _ROS_std_msgs_Int8MultiArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/MultiArrayLayout.h"
+
+namespace std_msgs
+{
+
+  class Int8MultiArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::MultiArrayLayout _layout_type;
+      _layout_type layout;
+      uint32_t data_length;
+      typedef int8_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    Int8MultiArray():
+      layout(),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->layout.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_datai;
+      u_datai.real = this->data[i];
+      *(outbuffer + offset + 0) = (u_datai.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->layout.deserialize(inbuffer + offset);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (int8_t*)realloc(this->data, data_lengthT * sizeof(int8_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      union {
+        int8_t real;
+        uint8_t base;
+      } u_st_data;
+      u_st_data.base = 0;
+      u_st_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->st_data = u_st_data.real;
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(int8_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Int8MultiArray"; };
+    const char * getMD5(){ return "d7c1af35a1b4781bbe79e03dd94b7c13"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/MultiArrayDimension.h b/otto_controller_source/Inc/std_msgs/MultiArrayDimension.h
new file mode 100644 (file)
index 0000000..5b09475
--- /dev/null
@@ -0,0 +1,81 @@
+#ifndef _ROS_std_msgs_MultiArrayDimension_h
+#define _ROS_std_msgs_MultiArrayDimension_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class MultiArrayDimension : public ros::Msg
+  {
+    public:
+      typedef const char* _label_type;
+      _label_type label;
+      typedef uint32_t _size_type;
+      _size_type size;
+      typedef uint32_t _stride_type;
+      _stride_type stride;
+
+    MultiArrayDimension():
+      label(""),
+      size(0),
+      stride(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_label = strlen(this->label);
+      varToArr(outbuffer + offset, length_label);
+      offset += 4;
+      memcpy(outbuffer + offset, this->label, length_label);
+      offset += length_label;
+      *(outbuffer + offset + 0) = (this->size >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->size >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->size >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->size >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->size);
+      *(outbuffer + offset + 0) = (this->stride >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->stride >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->stride >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->stride >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->stride);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_label;
+      arrToVar(length_label, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_label; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_label-1]=0;
+      this->label = (char *)(inbuffer + offset-1);
+      offset += length_label;
+      this->size =  ((uint32_t) (*(inbuffer + offset)));
+      this->size |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->size |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->size |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->size);
+      this->stride =  ((uint32_t) (*(inbuffer + offset)));
+      this->stride |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->stride |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->stride |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->stride);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/MultiArrayDimension"; };
+    const char * getMD5(){ return "4cd0c83a8683deae40ecdac60e53bfa8"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/MultiArrayLayout.h b/otto_controller_source/Inc/std_msgs/MultiArrayLayout.h
new file mode 100644 (file)
index 0000000..3d1c8df
--- /dev/null
@@ -0,0 +1,77 @@
+#ifndef _ROS_std_msgs_MultiArrayLayout_h
+#define _ROS_std_msgs_MultiArrayLayout_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/MultiArrayDimension.h"
+
+namespace std_msgs
+{
+
+  class MultiArrayLayout : public ros::Msg
+  {
+    public:
+      uint32_t dim_length;
+      typedef std_msgs::MultiArrayDimension _dim_type;
+      _dim_type st_dim;
+      _dim_type * dim;
+      typedef uint32_t _data_offset_type;
+      _data_offset_type data_offset;
+
+    MultiArrayLayout():
+      dim_length(0), dim(NULL),
+      data_offset(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->dim_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->dim_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->dim_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->dim_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->dim_length);
+      for( uint32_t i = 0; i < dim_length; i++){
+      offset += this->dim[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->data_offset >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_offset >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_offset >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_offset >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t dim_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      dim_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      dim_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      dim_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->dim_length);
+      if(dim_lengthT > dim_length)
+        this->dim = (std_msgs::MultiArrayDimension*)realloc(this->dim, dim_lengthT * sizeof(std_msgs::MultiArrayDimension));
+      dim_length = dim_lengthT;
+      for( uint32_t i = 0; i < dim_length; i++){
+      offset += this->st_dim.deserialize(inbuffer + offset);
+        memcpy( &(this->dim[i]), &(this->st_dim), sizeof(std_msgs::MultiArrayDimension));
+      }
+      this->data_offset =  ((uint32_t) (*(inbuffer + offset)));
+      this->data_offset |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->data_offset |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->data_offset |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->data_offset);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/MultiArrayLayout"; };
+    const char * getMD5(){ return "0fed2a11c13e11c5571b4e2a995a91a3"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/String.h b/otto_controller_source/Inc/std_msgs/String.h
new file mode 100644 (file)
index 0000000..3fce50d
--- /dev/null
@@ -0,0 +1,55 @@
+#ifndef _ROS_std_msgs_String_h
+#define _ROS_std_msgs_String_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class String : public ros::Msg
+  {
+    public:
+      typedef const char* _data_type;
+      _data_type data;
+
+    String():
+      data("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_data = strlen(this->data);
+      varToArr(outbuffer + offset, length_data);
+      offset += 4;
+      memcpy(outbuffer + offset, this->data, length_data);
+      offset += length_data;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_data;
+      arrToVar(length_data, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_data; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_data-1]=0;
+      this->data = (char *)(inbuffer + offset-1);
+      offset += length_data;
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/String"; };
+    const char * getMD5(){ return "992ce8a1687cec8c8bd883ec73ca41d1"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/Time.h b/otto_controller_source/Inc/std_msgs/Time.h
new file mode 100644 (file)
index 0000000..c1ca708
--- /dev/null
@@ -0,0 +1,62 @@
+#ifndef _ROS_std_msgs_Time_h
+#define _ROS_std_msgs_Time_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/time.h"
+
+namespace std_msgs
+{
+
+  class Time : public ros::Msg
+  {
+    public:
+      typedef ros::Time _data_type;
+      _data_type data;
+
+    Time():
+      data()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->data.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data.sec);
+      *(outbuffer + offset + 0) = (this->data.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->data.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->data.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->data.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->data.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->data.sec);
+      this->data.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->data.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->data.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/Time"; };
+    const char * getMD5(){ return "cd7166c74c552c311fbcc2fe5a7bc289"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/UInt16.h b/otto_controller_source/Inc/std_msgs/UInt16.h
new file mode 100644 (file)
index 0000000..63ab7ec
--- /dev/null
@@ -0,0 +1,47 @@
+#ifndef _ROS_std_msgs_UInt16_h
+#define _ROS_std_msgs_UInt16_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class UInt16 : public ros::Msg
+  {
+    public:
+      typedef uint16_t _data_type;
+      _data_type data;
+
+    UInt16():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->data >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data >> (8 * 1)) & 0xFF;
+      offset += sizeof(this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->data =  ((uint16_t) (*(inbuffer + offset)));
+      this->data |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      offset += sizeof(this->data);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/UInt16"; };
+    const char * getMD5(){ return "1df79edf208b629fe6b81923a544552d"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/UInt16MultiArray.h b/otto_controller_source/Inc/std_msgs/UInt16MultiArray.h
new file mode 100644 (file)
index 0000000..f528d1f
--- /dev/null
@@ -0,0 +1,73 @@
+#ifndef _ROS_std_msgs_UInt16MultiArray_h
+#define _ROS_std_msgs_UInt16MultiArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/MultiArrayLayout.h"
+
+namespace std_msgs
+{
+
+  class UInt16MultiArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::MultiArrayLayout _layout_type;
+      _layout_type layout;
+      uint32_t data_length;
+      typedef uint16_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    UInt16MultiArray():
+      layout(),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->layout.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data[i] >> (8 * 1)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->layout.deserialize(inbuffer + offset);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (uint16_t*)realloc(this->data, data_lengthT * sizeof(uint16_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      this->st_data =  ((uint16_t) (*(inbuffer + offset)));
+      this->st_data |= ((uint16_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(uint16_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/UInt16MultiArray"; };
+    const char * getMD5(){ return "52f264f1c973c4b73790d384c6cb4484"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/UInt32.h b/otto_controller_source/Inc/std_msgs/UInt32.h
new file mode 100644 (file)
index 0000000..38c0adf
--- /dev/null
@@ -0,0 +1,51 @@
+#ifndef _ROS_std_msgs_UInt32_h
+#define _ROS_std_msgs_UInt32_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class UInt32 : public ros::Msg
+  {
+    public:
+      typedef uint32_t _data_type;
+      _data_type data;
+
+    UInt32():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->data >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->data =  ((uint32_t) (*(inbuffer + offset)));
+      this->data |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->data |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->data |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->data);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/UInt32"; };
+    const char * getMD5(){ return "304a39449588c7f8ce2df6e8001c5fce"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/UInt32MultiArray.h b/otto_controller_source/Inc/std_msgs/UInt32MultiArray.h
new file mode 100644 (file)
index 0000000..4022f51
--- /dev/null
@@ -0,0 +1,77 @@
+#ifndef _ROS_std_msgs_UInt32MultiArray_h
+#define _ROS_std_msgs_UInt32MultiArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/MultiArrayLayout.h"
+
+namespace std_msgs
+{
+
+  class UInt32MultiArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::MultiArrayLayout _layout_type;
+      _layout_type layout;
+      uint32_t data_length;
+      typedef uint32_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    UInt32MultiArray():
+      layout(),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->layout.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data[i] >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data[i] >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data[i] >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->layout.deserialize(inbuffer + offset);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (uint32_t*)realloc(this->data, data_lengthT * sizeof(uint32_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      this->st_data =  ((uint32_t) (*(inbuffer + offset)));
+      this->st_data |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->st_data |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->st_data |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(uint32_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/UInt32MultiArray"; };
+    const char * getMD5(){ return "4d6a180abc9be191b96a7eda6c8a233d"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/UInt64.h b/otto_controller_source/Inc/std_msgs/UInt64.h
new file mode 100644 (file)
index 0000000..cc23199
--- /dev/null
@@ -0,0 +1,59 @@
+#ifndef _ROS_std_msgs_UInt64_h
+#define _ROS_std_msgs_UInt64_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class UInt64 : public ros::Msg
+  {
+    public:
+      typedef uint64_t _data_type;
+      _data_type data;
+
+    UInt64():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->data >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (this->data >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (this->data >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (this->data >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (this->data >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->data =  ((uint64_t) (*(inbuffer + offset)));
+      this->data |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->data |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->data |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->data |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      this->data |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      this->data |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      this->data |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      offset += sizeof(this->data);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/UInt64"; };
+    const char * getMD5(){ return "1b2a79973e8bf53d7b53acb71299cb57"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/UInt64MultiArray.h b/otto_controller_source/Inc/std_msgs/UInt64MultiArray.h
new file mode 100644 (file)
index 0000000..bee1fb3
--- /dev/null
@@ -0,0 +1,85 @@
+#ifndef _ROS_std_msgs_UInt64MultiArray_h
+#define _ROS_std_msgs_UInt64MultiArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/MultiArrayLayout.h"
+
+namespace std_msgs
+{
+
+  class UInt64MultiArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::MultiArrayLayout _layout_type;
+      _layout_type layout;
+      uint32_t data_length;
+      typedef uint64_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    UInt64MultiArray():
+      layout(),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->layout.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data[i] >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data[i] >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data[i] >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (this->data[i] >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (this->data[i] >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (this->data[i] >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (this->data[i] >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->layout.deserialize(inbuffer + offset);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (uint64_t*)realloc(this->data, data_lengthT * sizeof(uint64_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      this->st_data =  ((uint64_t) (*(inbuffer + offset)));
+      this->st_data |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->st_data |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->st_data |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->st_data |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      this->st_data |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      this->st_data |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      this->st_data |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(uint64_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/UInt64MultiArray"; };
+    const char * getMD5(){ return "6088f127afb1d6c72927aa1247e945af"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/UInt8.h b/otto_controller_source/Inc/std_msgs/UInt8.h
new file mode 100644 (file)
index 0000000..bd7901c
--- /dev/null
@@ -0,0 +1,45 @@
+#ifndef _ROS_std_msgs_UInt8_h
+#define _ROS_std_msgs_UInt8_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_msgs
+{
+
+  class UInt8 : public ros::Msg
+  {
+    public:
+      typedef uint8_t _data_type;
+      _data_type data;
+
+    UInt8():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->data >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->data =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->data);
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/UInt8"; };
+    const char * getMD5(){ return "7c8164229e7d2c17eb95e9231617fdee"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_msgs/UInt8MultiArray.h b/otto_controller_source/Inc/std_msgs/UInt8MultiArray.h
new file mode 100644 (file)
index 0000000..a579fa7
--- /dev/null
@@ -0,0 +1,71 @@
+#ifndef _ROS_std_msgs_UInt8MultiArray_h
+#define _ROS_std_msgs_UInt8MultiArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/MultiArrayLayout.h"
+
+namespace std_msgs
+{
+
+  class UInt8MultiArray : public ros::Msg
+  {
+    public:
+      typedef std_msgs::MultiArrayLayout _layout_type;
+      _layout_type layout;
+      uint32_t data_length;
+      typedef uint8_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+
+    UInt8MultiArray():
+      layout(),
+      data_length(0), data(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->layout.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->layout.deserialize(inbuffer + offset);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      this->st_data =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "std_msgs/UInt8MultiArray"; };
+    const char * getMD5(){ return "82373f1612381bb6ee473b5cd6f5d89c"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_srvs/Empty.h b/otto_controller_source/Inc/std_srvs/Empty.h
new file mode 100644 (file)
index 0000000..b040dd2
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef _ROS_SERVICE_Empty_h
+#define _ROS_SERVICE_Empty_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_srvs
+{
+
+static const char EMPTY[] = "std_srvs/Empty";
+
+  class EmptyRequest : public ros::Msg
+  {
+    public:
+
+    EmptyRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return EMPTY; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class EmptyResponse : public ros::Msg
+  {
+    public:
+
+    EmptyResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return EMPTY; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class Empty {
+    public:
+    typedef EmptyRequest Request;
+    typedef EmptyResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_srvs/SetBool.h b/otto_controller_source/Inc/std_srvs/SetBool.h
new file mode 100644 (file)
index 0000000..1feb34e
--- /dev/null
@@ -0,0 +1,123 @@
+#ifndef _ROS_SERVICE_SetBool_h
+#define _ROS_SERVICE_SetBool_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_srvs
+{
+
+static const char SETBOOL[] = "std_srvs/SetBool";
+
+  class SetBoolRequest : public ros::Msg
+  {
+    public:
+      typedef bool _data_type;
+      _data_type data;
+
+    SetBoolRequest():
+      data(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_data;
+      u_data.real = this->data;
+      *(outbuffer + offset + 0) = (u_data.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_data;
+      u_data.base = 0;
+      u_data.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->data = u_data.real;
+      offset += sizeof(this->data);
+     return offset;
+    }
+
+    const char * getType(){ return SETBOOL; };
+    const char * getMD5(){ return "8b94c1b53db61fb6aed406028ad6332a"; };
+
+  };
+
+  class SetBoolResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _message_type;
+      _message_type message;
+
+    SetBoolResponse():
+      success(0),
+      message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_message = strlen(this->message);
+      varToArr(outbuffer + offset, length_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->message, length_message);
+      offset += length_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_message;
+      arrToVar(length_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_message-1]=0;
+      this->message = (char *)(inbuffer + offset-1);
+      offset += length_message;
+     return offset;
+    }
+
+    const char * getType(){ return SETBOOL; };
+    const char * getMD5(){ return "937c9679a518e3a18d831e57125ea522"; };
+
+  };
+
+  class SetBool {
+    public:
+    typedef SetBoolRequest Request;
+    typedef SetBoolResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/std_srvs/Trigger.h b/otto_controller_source/Inc/std_srvs/Trigger.h
new file mode 100644 (file)
index 0000000..34d1e48
--- /dev/null
@@ -0,0 +1,105 @@
+#ifndef _ROS_SERVICE_Trigger_h
+#define _ROS_SERVICE_Trigger_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace std_srvs
+{
+
+static const char TRIGGER[] = "std_srvs/Trigger";
+
+  class TriggerRequest : public ros::Msg
+  {
+    public:
+
+    TriggerRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return TRIGGER; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class TriggerResponse : public ros::Msg
+  {
+    public:
+      typedef bool _success_type;
+      _success_type success;
+      typedef const char* _message_type;
+      _message_type message;
+
+    TriggerResponse():
+      success(0),
+      message("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.real = this->success;
+      *(outbuffer + offset + 0) = (u_success.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->success);
+      uint32_t length_message = strlen(this->message);
+      varToArr(outbuffer + offset, length_message);
+      offset += 4;
+      memcpy(outbuffer + offset, this->message, length_message);
+      offset += length_message;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        bool real;
+        uint8_t base;
+      } u_success;
+      u_success.base = 0;
+      u_success.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->success = u_success.real;
+      offset += sizeof(this->success);
+      uint32_t length_message;
+      arrToVar(length_message, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_message; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_message-1]=0;
+      this->message = (char *)(inbuffer + offset-1);
+      offset += length_message;
+     return offset;
+    }
+
+    const char * getType(){ return TRIGGER; };
+    const char * getMD5(){ return "937c9679a518e3a18d831e57125ea522"; };
+
+  };
+
+  class Trigger {
+    public:
+    typedef TriggerRequest Request;
+    typedef TriggerResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/stereo_msgs/DisparityImage.h b/otto_controller_source/Inc/stereo_msgs/DisparityImage.h
new file mode 100644 (file)
index 0000000..a038acd
--- /dev/null
@@ -0,0 +1,176 @@
+#ifndef _ROS_stereo_msgs_DisparityImage_h
+#define _ROS_stereo_msgs_DisparityImage_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "sensor_msgs/Image.h"
+#include "sensor_msgs/RegionOfInterest.h"
+
+namespace stereo_msgs
+{
+
+  class DisparityImage : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef sensor_msgs::Image _image_type;
+      _image_type image;
+      typedef float _f_type;
+      _f_type f;
+      typedef float _T_type;
+      _T_type T;
+      typedef sensor_msgs::RegionOfInterest _valid_window_type;
+      _valid_window_type valid_window;
+      typedef float _min_disparity_type;
+      _min_disparity_type min_disparity;
+      typedef float _max_disparity_type;
+      _max_disparity_type max_disparity;
+      typedef float _delta_d_type;
+      _delta_d_type delta_d;
+
+    DisparityImage():
+      header(),
+      image(),
+      f(0),
+      T(0),
+      valid_window(),
+      min_disparity(0),
+      max_disparity(0),
+      delta_d(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->image.serialize(outbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_f;
+      u_f.real = this->f;
+      *(outbuffer + offset + 0) = (u_f.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_f.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_f.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_f.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->f);
+      union {
+        float real;
+        uint32_t base;
+      } u_T;
+      u_T.real = this->T;
+      *(outbuffer + offset + 0) = (u_T.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_T.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_T.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_T.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->T);
+      offset += this->valid_window.serialize(outbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_min_disparity;
+      u_min_disparity.real = this->min_disparity;
+      *(outbuffer + offset + 0) = (u_min_disparity.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_min_disparity.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_min_disparity.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_min_disparity.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->min_disparity);
+      union {
+        float real;
+        uint32_t base;
+      } u_max_disparity;
+      u_max_disparity.real = this->max_disparity;
+      *(outbuffer + offset + 0) = (u_max_disparity.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_max_disparity.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_max_disparity.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_max_disparity.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->max_disparity);
+      union {
+        float real;
+        uint32_t base;
+      } u_delta_d;
+      u_delta_d.real = this->delta_d;
+      *(outbuffer + offset + 0) = (u_delta_d.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_delta_d.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_delta_d.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_delta_d.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->delta_d);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->image.deserialize(inbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_f;
+      u_f.base = 0;
+      u_f.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_f.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_f.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_f.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->f = u_f.real;
+      offset += sizeof(this->f);
+      union {
+        float real;
+        uint32_t base;
+      } u_T;
+      u_T.base = 0;
+      u_T.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_T.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_T.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_T.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->T = u_T.real;
+      offset += sizeof(this->T);
+      offset += this->valid_window.deserialize(inbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_min_disparity;
+      u_min_disparity.base = 0;
+      u_min_disparity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_min_disparity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_min_disparity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_min_disparity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->min_disparity = u_min_disparity.real;
+      offset += sizeof(this->min_disparity);
+      union {
+        float real;
+        uint32_t base;
+      } u_max_disparity;
+      u_max_disparity.base = 0;
+      u_max_disparity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_max_disparity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_max_disparity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_max_disparity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->max_disparity = u_max_disparity.real;
+      offset += sizeof(this->max_disparity);
+      union {
+        float real;
+        uint32_t base;
+      } u_delta_d;
+      u_delta_d.base = 0;
+      u_delta_d.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_delta_d.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_delta_d.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_delta_d.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->delta_d = u_delta_d.real;
+      offset += sizeof(this->delta_d);
+     return offset;
+    }
+
+    const char * getType(){ return "stereo_msgs/DisparityImage"; };
+    const char * getMD5(){ return "04a177815f75271039fa21f16acad8c9"; };
+
+  };
+
+}
+#endif
index 0da8dc52b8cfaa464cdcc76d90992bf711763e4c..de63831a16540d1c6b7d4bd1d88848e69665cfeb 100644 (file)
@@ -63,7 +63,7 @@
 /* #define HAL_MMC_MODULE_ENABLED   */\r
 /* #define HAL_SPDIFRX_MODULE_ENABLED   */\r
 /* #define HAL_SPI_MODULE_ENABLED   */\r
-/* #define HAL_TIM_MODULE_ENABLED   */\r
+#define HAL_TIM_MODULE_ENABLED\r
 #define HAL_UART_MODULE_ENABLED\r
 /* #define HAL_USART_MODULE_ENABLED   */\r
 /* #define HAL_IRDA_MODULE_ENABLED   */\r
diff --git a/otto_controller_source/Inc/tf/FrameGraph.h b/otto_controller_source/Inc/tf/FrameGraph.h
new file mode 100644 (file)
index 0000000..e95a945
--- /dev/null
@@ -0,0 +1,87 @@
+#ifndef _ROS_SERVICE_FrameGraph_h
+#define _ROS_SERVICE_FrameGraph_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace tf
+{
+
+static const char FRAMEGRAPH[] = "tf/FrameGraph";
+
+  class FrameGraphRequest : public ros::Msg
+  {
+    public:
+
+    FrameGraphRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return FRAMEGRAPH; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class FrameGraphResponse : public ros::Msg
+  {
+    public:
+      typedef const char* _dot_graph_type;
+      _dot_graph_type dot_graph;
+
+    FrameGraphResponse():
+      dot_graph("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_dot_graph = strlen(this->dot_graph);
+      varToArr(outbuffer + offset, length_dot_graph);
+      offset += 4;
+      memcpy(outbuffer + offset, this->dot_graph, length_dot_graph);
+      offset += length_dot_graph;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_dot_graph;
+      arrToVar(length_dot_graph, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_dot_graph; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_dot_graph-1]=0;
+      this->dot_graph = (char *)(inbuffer + offset-1);
+      offset += length_dot_graph;
+     return offset;
+    }
+
+    const char * getType(){ return FRAMEGRAPH; };
+    const char * getMD5(){ return "c4af9ac907e58e906eb0b6e3c58478c0"; };
+
+  };
+
+  class FrameGraph {
+    public:
+    typedef FrameGraphRequest Request;
+    typedef FrameGraphResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/tf/tf.h b/otto_controller_source/Inc/tf/tf.h
new file mode 100644 (file)
index 0000000..97858fe
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2011, Willow Garage, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ROS_TF_H_
+#define ROS_TF_H_
+
+#include "geometry_msgs/TransformStamped.h"
+
+namespace tf
+{
+
+static inline geometry_msgs::Quaternion createQuaternionFromYaw(double yaw)
+{
+  geometry_msgs::Quaternion q;
+  q.x = 0;
+  q.y = 0;
+  q.z = sin(yaw * 0.5);
+  q.w = cos(yaw * 0.5);
+  return q;
+}
+
+}
+
+#endif
+
diff --git a/otto_controller_source/Inc/tf/tfMessage.h b/otto_controller_source/Inc/tf/tfMessage.h
new file mode 100644 (file)
index 0000000..991ad06
--- /dev/null
@@ -0,0 +1,64 @@
+#ifndef _ROS_tf_tfMessage_h
+#define _ROS_tf_tfMessage_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/TransformStamped.h"
+
+namespace tf
+{
+
+  class tfMessage : public ros::Msg
+  {
+    public:
+      uint32_t transforms_length;
+      typedef geometry_msgs::TransformStamped _transforms_type;
+      _transforms_type st_transforms;
+      _transforms_type * transforms;
+
+    tfMessage():
+      transforms_length(0), transforms(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->transforms_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->transforms_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->transforms_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->transforms_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->transforms_length);
+      for( uint32_t i = 0; i < transforms_length; i++){
+      offset += this->transforms[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t transforms_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->transforms_length);
+      if(transforms_lengthT > transforms_length)
+        this->transforms = (geometry_msgs::TransformStamped*)realloc(this->transforms, transforms_lengthT * sizeof(geometry_msgs::TransformStamped));
+      transforms_length = transforms_lengthT;
+      for( uint32_t i = 0; i < transforms_length; i++){
+      offset += this->st_transforms.deserialize(inbuffer + offset);
+        memcpy( &(this->transforms[i]), &(this->st_transforms), sizeof(geometry_msgs::TransformStamped));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "tf/tfMessage"; };
+    const char * getMD5(){ return "94810edda583a504dfda3829e70d7eec"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/tf/transform_broadcaster.h b/otto_controller_source/Inc/tf/transform_broadcaster.h
new file mode 100644 (file)
index 0000000..6c4e5fe
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2011, Willow Garage, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ROS_TRANSFORM_BROADCASTER_H_
+#define ROS_TRANSFORM_BROADCASTER_H_
+
+#include "ros.h"
+#include "tfMessage.h"
+
+namespace tf
+{
+
+class TransformBroadcaster
+{
+public:
+  TransformBroadcaster() : publisher_("/tf", &internal_msg) {}
+
+  void init(ros::NodeHandle &nh)
+  {
+    nh.advertise(publisher_);
+  }
+
+  void sendTransform(geometry_msgs::TransformStamped &transform)
+  {
+    internal_msg.transforms_length = 1;
+    internal_msg.transforms = &transform;
+    publisher_.publish(&internal_msg);
+  }
+
+private:
+  tf::tfMessage internal_msg;
+  ros::Publisher publisher_;
+};
+
+}
+
+#endif
+
diff --git a/otto_controller_source/Inc/tf2_msgs/FrameGraph.h b/otto_controller_source/Inc/tf2_msgs/FrameGraph.h
new file mode 100644 (file)
index 0000000..9145639
--- /dev/null
@@ -0,0 +1,87 @@
+#ifndef _ROS_SERVICE_FrameGraph_h
+#define _ROS_SERVICE_FrameGraph_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace tf2_msgs
+{
+
+static const char FRAMEGRAPH[] = "tf2_msgs/FrameGraph";
+
+  class FrameGraphRequest : public ros::Msg
+  {
+    public:
+
+    FrameGraphRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return FRAMEGRAPH; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class FrameGraphResponse : public ros::Msg
+  {
+    public:
+      typedef const char* _frame_yaml_type;
+      _frame_yaml_type frame_yaml;
+
+    FrameGraphResponse():
+      frame_yaml("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_frame_yaml = strlen(this->frame_yaml);
+      varToArr(outbuffer + offset, length_frame_yaml);
+      offset += 4;
+      memcpy(outbuffer + offset, this->frame_yaml, length_frame_yaml);
+      offset += length_frame_yaml;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_frame_yaml;
+      arrToVar(length_frame_yaml, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_frame_yaml; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_frame_yaml-1]=0;
+      this->frame_yaml = (char *)(inbuffer + offset-1);
+      offset += length_frame_yaml;
+     return offset;
+    }
+
+    const char * getType(){ return FRAMEGRAPH; };
+    const char * getMD5(){ return "437ea58e9463815a0d511c7326b686b0"; };
+
+  };
+
+  class FrameGraph {
+    public:
+    typedef FrameGraphRequest Request;
+    typedef FrameGraphResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/tf2_msgs/LookupTransformAction.h b/otto_controller_source/Inc/tf2_msgs/LookupTransformAction.h
new file mode 100644 (file)
index 0000000..2a7444b
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_tf2_msgs_LookupTransformAction_h
+#define _ROS_tf2_msgs_LookupTransformAction_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "tf2_msgs/LookupTransformActionGoal.h"
+#include "tf2_msgs/LookupTransformActionResult.h"
+#include "tf2_msgs/LookupTransformActionFeedback.h"
+
+namespace tf2_msgs
+{
+
+  class LookupTransformAction : public ros::Msg
+  {
+    public:
+      typedef tf2_msgs::LookupTransformActionGoal _action_goal_type;
+      _action_goal_type action_goal;
+      typedef tf2_msgs::LookupTransformActionResult _action_result_type;
+      _action_result_type action_result;
+      typedef tf2_msgs::LookupTransformActionFeedback _action_feedback_type;
+      _action_feedback_type action_feedback;
+
+    LookupTransformAction():
+      action_goal(),
+      action_result(),
+      action_feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->action_goal.serialize(outbuffer + offset);
+      offset += this->action_result.serialize(outbuffer + offset);
+      offset += this->action_feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->action_goal.deserialize(inbuffer + offset);
+      offset += this->action_result.deserialize(inbuffer + offset);
+      offset += this->action_feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "tf2_msgs/LookupTransformAction"; };
+    const char * getMD5(){ return "7ee01ba91a56c2245c610992dbaa3c37"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/tf2_msgs/LookupTransformActionFeedback.h b/otto_controller_source/Inc/tf2_msgs/LookupTransformActionFeedback.h
new file mode 100644 (file)
index 0000000..944f42d
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_tf2_msgs_LookupTransformActionFeedback_h
+#define _ROS_tf2_msgs_LookupTransformActionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "tf2_msgs/LookupTransformFeedback.h"
+
+namespace tf2_msgs
+{
+
+  class LookupTransformActionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef tf2_msgs::LookupTransformFeedback _feedback_type;
+      _feedback_type feedback;
+
+    LookupTransformActionFeedback():
+      header(),
+      status(),
+      feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "tf2_msgs/LookupTransformActionFeedback"; };
+    const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/tf2_msgs/LookupTransformActionGoal.h b/otto_controller_source/Inc/tf2_msgs/LookupTransformActionGoal.h
new file mode 100644 (file)
index 0000000..f0fa740
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_tf2_msgs_LookupTransformActionGoal_h
+#define _ROS_tf2_msgs_LookupTransformActionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalID.h"
+#include "tf2_msgs/LookupTransformGoal.h"
+
+namespace tf2_msgs
+{
+
+  class LookupTransformActionGoal : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef tf2_msgs::LookupTransformGoal _goal_type;
+      _goal_type goal;
+
+    LookupTransformActionGoal():
+      header(),
+      goal_id(),
+      goal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->goal_id.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "tf2_msgs/LookupTransformActionGoal"; };
+    const char * getMD5(){ return "f2e7bcdb75c847978d0351a13e699da5"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/tf2_msgs/LookupTransformActionResult.h b/otto_controller_source/Inc/tf2_msgs/LookupTransformActionResult.h
new file mode 100644 (file)
index 0000000..b45a8b6
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_tf2_msgs_LookupTransformActionResult_h
+#define _ROS_tf2_msgs_LookupTransformActionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "tf2_msgs/LookupTransformResult.h"
+
+namespace tf2_msgs
+{
+
+  class LookupTransformActionResult : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef tf2_msgs::LookupTransformResult _result_type;
+      _result_type result;
+
+    LookupTransformActionResult():
+      header(),
+      status(),
+      result()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->result.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->result.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "tf2_msgs/LookupTransformActionResult"; };
+    const char * getMD5(){ return "ac26ce75a41384fa8bb4dc10f491ab90"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/tf2_msgs/LookupTransformFeedback.h b/otto_controller_source/Inc/tf2_msgs/LookupTransformFeedback.h
new file mode 100644 (file)
index 0000000..fe78dce
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _ROS_tf2_msgs_LookupTransformFeedback_h
+#define _ROS_tf2_msgs_LookupTransformFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace tf2_msgs
+{
+
+  class LookupTransformFeedback : public ros::Msg
+  {
+    public:
+
+    LookupTransformFeedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return "tf2_msgs/LookupTransformFeedback"; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/tf2_msgs/LookupTransformGoal.h b/otto_controller_source/Inc/tf2_msgs/LookupTransformGoal.h
new file mode 100644 (file)
index 0000000..11cc856
--- /dev/null
@@ -0,0 +1,178 @@
+#ifndef _ROS_tf2_msgs_LookupTransformGoal_h
+#define _ROS_tf2_msgs_LookupTransformGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/time.h"
+#include "ros/duration.h"
+
+namespace tf2_msgs
+{
+
+  class LookupTransformGoal : public ros::Msg
+  {
+    public:
+      typedef const char* _target_frame_type;
+      _target_frame_type target_frame;
+      typedef const char* _source_frame_type;
+      _source_frame_type source_frame;
+      typedef ros::Time _source_time_type;
+      _source_time_type source_time;
+      typedef ros::Duration _timeout_type;
+      _timeout_type timeout;
+      typedef ros::Time _target_time_type;
+      _target_time_type target_time;
+      typedef const char* _fixed_frame_type;
+      _fixed_frame_type fixed_frame;
+      typedef bool _advanced_type;
+      _advanced_type advanced;
+
+    LookupTransformGoal():
+      target_frame(""),
+      source_frame(""),
+      source_time(),
+      timeout(),
+      target_time(),
+      fixed_frame(""),
+      advanced(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_target_frame = strlen(this->target_frame);
+      varToArr(outbuffer + offset, length_target_frame);
+      offset += 4;
+      memcpy(outbuffer + offset, this->target_frame, length_target_frame);
+      offset += length_target_frame;
+      uint32_t length_source_frame = strlen(this->source_frame);
+      varToArr(outbuffer + offset, length_source_frame);
+      offset += 4;
+      memcpy(outbuffer + offset, this->source_frame, length_source_frame);
+      offset += length_source_frame;
+      *(outbuffer + offset + 0) = (this->source_time.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->source_time.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->source_time.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->source_time.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->source_time.sec);
+      *(outbuffer + offset + 0) = (this->source_time.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->source_time.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->source_time.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->source_time.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->source_time.nsec);
+      *(outbuffer + offset + 0) = (this->timeout.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->timeout.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->timeout.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->timeout.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->timeout.sec);
+      *(outbuffer + offset + 0) = (this->timeout.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->timeout.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->timeout.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->timeout.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->timeout.nsec);
+      *(outbuffer + offset + 0) = (this->target_time.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->target_time.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->target_time.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->target_time.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->target_time.sec);
+      *(outbuffer + offset + 0) = (this->target_time.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->target_time.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->target_time.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->target_time.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->target_time.nsec);
+      uint32_t length_fixed_frame = strlen(this->fixed_frame);
+      varToArr(outbuffer + offset, length_fixed_frame);
+      offset += 4;
+      memcpy(outbuffer + offset, this->fixed_frame, length_fixed_frame);
+      offset += length_fixed_frame;
+      union {
+        bool real;
+        uint8_t base;
+      } u_advanced;
+      u_advanced.real = this->advanced;
+      *(outbuffer + offset + 0) = (u_advanced.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->advanced);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_target_frame;
+      arrToVar(length_target_frame, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_target_frame; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_target_frame-1]=0;
+      this->target_frame = (char *)(inbuffer + offset-1);
+      offset += length_target_frame;
+      uint32_t length_source_frame;
+      arrToVar(length_source_frame, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_source_frame; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_source_frame-1]=0;
+      this->source_frame = (char *)(inbuffer + offset-1);
+      offset += length_source_frame;
+      this->source_time.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->source_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->source_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->source_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->source_time.sec);
+      this->source_time.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->source_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->source_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->source_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->source_time.nsec);
+      this->timeout.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->timeout.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->timeout.sec);
+      this->timeout.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->timeout.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->timeout.nsec);
+      this->target_time.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->target_time.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->target_time.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->target_time.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->target_time.sec);
+      this->target_time.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->target_time.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->target_time.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->target_time.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->target_time.nsec);
+      uint32_t length_fixed_frame;
+      arrToVar(length_fixed_frame, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_fixed_frame; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_fixed_frame-1]=0;
+      this->fixed_frame = (char *)(inbuffer + offset-1);
+      offset += length_fixed_frame;
+      union {
+        bool real;
+        uint8_t base;
+      } u_advanced;
+      u_advanced.base = 0;
+      u_advanced.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->advanced = u_advanced.real;
+      offset += sizeof(this->advanced);
+     return offset;
+    }
+
+    const char * getType(){ return "tf2_msgs/LookupTransformGoal"; };
+    const char * getMD5(){ return "35e3720468131d675a18bb6f3e5f22f8"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/tf2_msgs/LookupTransformResult.h b/otto_controller_source/Inc/tf2_msgs/LookupTransformResult.h
new file mode 100644 (file)
index 0000000..e1e0453
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef _ROS_tf2_msgs_LookupTransformResult_h
+#define _ROS_tf2_msgs_LookupTransformResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/TransformStamped.h"
+#include "tf2_msgs/TF2Error.h"
+
+namespace tf2_msgs
+{
+
+  class LookupTransformResult : public ros::Msg
+  {
+    public:
+      typedef geometry_msgs::TransformStamped _transform_type;
+      _transform_type transform;
+      typedef tf2_msgs::TF2Error _error_type;
+      _error_type error;
+
+    LookupTransformResult():
+      transform(),
+      error()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->transform.serialize(outbuffer + offset);
+      offset += this->error.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->transform.deserialize(inbuffer + offset);
+      offset += this->error.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "tf2_msgs/LookupTransformResult"; };
+    const char * getMD5(){ return "3fe5db6a19ca9cfb675418c5ad875c36"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/tf2_msgs/TF2Error.h b/otto_controller_source/Inc/tf2_msgs/TF2Error.h
new file mode 100644 (file)
index 0000000..a44f1e6
--- /dev/null
@@ -0,0 +1,69 @@
+#ifndef _ROS_tf2_msgs_TF2Error_h
+#define _ROS_tf2_msgs_TF2Error_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace tf2_msgs
+{
+
+  class TF2Error : public ros::Msg
+  {
+    public:
+      typedef uint8_t _error_type;
+      _error_type error;
+      typedef const char* _error_string_type;
+      _error_string_type error_string;
+      enum { NO_ERROR =  0 };
+      enum { LOOKUP_ERROR =  1 };
+      enum { CONNECTIVITY_ERROR =  2 };
+      enum { EXTRAPOLATION_ERROR =  3 };
+      enum { INVALID_ARGUMENT_ERROR =  4 };
+      enum { TIMEOUT_ERROR =  5 };
+      enum { TRANSFORM_ERROR =  6 };
+
+    TF2Error():
+      error(0),
+      error_string("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->error >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->error);
+      uint32_t length_error_string = strlen(this->error_string);
+      varToArr(outbuffer + offset, length_error_string);
+      offset += 4;
+      memcpy(outbuffer + offset, this->error_string, length_error_string);
+      offset += length_error_string;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->error =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->error);
+      uint32_t length_error_string;
+      arrToVar(length_error_string, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_error_string; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_error_string-1]=0;
+      this->error_string = (char *)(inbuffer + offset-1);
+      offset += length_error_string;
+     return offset;
+    }
+
+    const char * getType(){ return "tf2_msgs/TF2Error"; };
+    const char * getMD5(){ return "bc6848fd6fd750c92e38575618a4917d"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/tf2_msgs/TFMessage.h b/otto_controller_source/Inc/tf2_msgs/TFMessage.h
new file mode 100644 (file)
index 0000000..0fec963
--- /dev/null
@@ -0,0 +1,64 @@
+#ifndef _ROS_tf2_msgs_TFMessage_h
+#define _ROS_tf2_msgs_TFMessage_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/TransformStamped.h"
+
+namespace tf2_msgs
+{
+
+  class TFMessage : public ros::Msg
+  {
+    public:
+      uint32_t transforms_length;
+      typedef geometry_msgs::TransformStamped _transforms_type;
+      _transforms_type st_transforms;
+      _transforms_type * transforms;
+
+    TFMessage():
+      transforms_length(0), transforms(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->transforms_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->transforms_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->transforms_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->transforms_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->transforms_length);
+      for( uint32_t i = 0; i < transforms_length; i++){
+      offset += this->transforms[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t transforms_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->transforms_length);
+      if(transforms_lengthT > transforms_length)
+        this->transforms = (geometry_msgs::TransformStamped*)realloc(this->transforms, transforms_lengthT * sizeof(geometry_msgs::TransformStamped));
+      transforms_length = transforms_lengthT;
+      for( uint32_t i = 0; i < transforms_length; i++){
+      offset += this->st_transforms.deserialize(inbuffer + offset);
+        memcpy( &(this->transforms[i]), &(this->st_transforms), sizeof(geometry_msgs::TransformStamped));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "tf2_msgs/TFMessage"; };
+    const char * getMD5(){ return "94810edda583a504dfda3829e70d7eec"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/theora_image_transport/Packet.h b/otto_controller_source/Inc/theora_image_transport/Packet.h
new file mode 100644 (file)
index 0000000..4bfe682
--- /dev/null
@@ -0,0 +1,183 @@
+#ifndef _ROS_theora_image_transport_Packet_h
+#define _ROS_theora_image_transport_Packet_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+
+namespace theora_image_transport
+{
+
+  class Packet : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t data_length;
+      typedef uint8_t _data_type;
+      _data_type st_data;
+      _data_type * data;
+      typedef int32_t _b_o_s_type;
+      _b_o_s_type b_o_s;
+      typedef int32_t _e_o_s_type;
+      _e_o_s_type e_o_s;
+      typedef int64_t _granulepos_type;
+      _granulepos_type granulepos;
+      typedef int64_t _packetno_type;
+      _packetno_type packetno;
+
+    Packet():
+      header(),
+      data_length(0), data(NULL),
+      b_o_s(0),
+      e_o_s(0),
+      granulepos(0),
+      packetno(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->data_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->data_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->data_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->data_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->data_length);
+      for( uint32_t i = 0; i < data_length; i++){
+      *(outbuffer + offset + 0) = (this->data[i] >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->data[i]);
+      }
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_b_o_s;
+      u_b_o_s.real = this->b_o_s;
+      *(outbuffer + offset + 0) = (u_b_o_s.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_b_o_s.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_b_o_s.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_b_o_s.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->b_o_s);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_e_o_s;
+      u_e_o_s.real = this->e_o_s;
+      *(outbuffer + offset + 0) = (u_e_o_s.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_e_o_s.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_e_o_s.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_e_o_s.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->e_o_s);
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_granulepos;
+      u_granulepos.real = this->granulepos;
+      *(outbuffer + offset + 0) = (u_granulepos.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_granulepos.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_granulepos.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_granulepos.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_granulepos.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_granulepos.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_granulepos.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_granulepos.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->granulepos);
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_packetno;
+      u_packetno.real = this->packetno;
+      *(outbuffer + offset + 0) = (u_packetno.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_packetno.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_packetno.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_packetno.base >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (u_packetno.base >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (u_packetno.base >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (u_packetno.base >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (u_packetno.base >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->packetno);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t data_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      data_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->data_length);
+      if(data_lengthT > data_length)
+        this->data = (uint8_t*)realloc(this->data, data_lengthT * sizeof(uint8_t));
+      data_length = data_lengthT;
+      for( uint32_t i = 0; i < data_length; i++){
+      this->st_data =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->st_data);
+        memcpy( &(this->data[i]), &(this->st_data), sizeof(uint8_t));
+      }
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_b_o_s;
+      u_b_o_s.base = 0;
+      u_b_o_s.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_b_o_s.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_b_o_s.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_b_o_s.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->b_o_s = u_b_o_s.real;
+      offset += sizeof(this->b_o_s);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_e_o_s;
+      u_e_o_s.base = 0;
+      u_e_o_s.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_e_o_s.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_e_o_s.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_e_o_s.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->e_o_s = u_e_o_s.real;
+      offset += sizeof(this->e_o_s);
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_granulepos;
+      u_granulepos.base = 0;
+      u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_granulepos.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->granulepos = u_granulepos.real;
+      offset += sizeof(this->granulepos);
+      union {
+        int64_t real;
+        uint64_t base;
+      } u_packetno;
+      u_packetno.base = 0;
+      u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      u_packetno.base |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      this->packetno = u_packetno.real;
+      offset += sizeof(this->packetno);
+     return offset;
+    }
+
+    const char * getType(){ return "theora_image_transport/Packet"; };
+    const char * getMD5(){ return "33ac4e14a7cff32e7e0d65f18bb410f3"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/topic_tools/DemuxAdd.h b/otto_controller_source/Inc/topic_tools/DemuxAdd.h
new file mode 100644 (file)
index 0000000..d8016c6
--- /dev/null
@@ -0,0 +1,87 @@
+#ifndef _ROS_SERVICE_DemuxAdd_h
+#define _ROS_SERVICE_DemuxAdd_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace topic_tools
+{
+
+static const char DEMUXADD[] = "topic_tools/DemuxAdd";
+
+  class DemuxAddRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _topic_type;
+      _topic_type topic;
+
+    DemuxAddRequest():
+      topic("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_topic = strlen(this->topic);
+      varToArr(outbuffer + offset, length_topic);
+      offset += 4;
+      memcpy(outbuffer + offset, this->topic, length_topic);
+      offset += length_topic;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_topic;
+      arrToVar(length_topic, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_topic; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_topic-1]=0;
+      this->topic = (char *)(inbuffer + offset-1);
+      offset += length_topic;
+     return offset;
+    }
+
+    const char * getType(){ return DEMUXADD; };
+    const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; };
+
+  };
+
+  class DemuxAddResponse : public ros::Msg
+  {
+    public:
+
+    DemuxAddResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return DEMUXADD; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class DemuxAdd {
+    public:
+    typedef DemuxAddRequest Request;
+    typedef DemuxAddResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/topic_tools/DemuxDelete.h b/otto_controller_source/Inc/topic_tools/DemuxDelete.h
new file mode 100644 (file)
index 0000000..3f030aa
--- /dev/null
@@ -0,0 +1,87 @@
+#ifndef _ROS_SERVICE_DemuxDelete_h
+#define _ROS_SERVICE_DemuxDelete_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace topic_tools
+{
+
+static const char DEMUXDELETE[] = "topic_tools/DemuxDelete";
+
+  class DemuxDeleteRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _topic_type;
+      _topic_type topic;
+
+    DemuxDeleteRequest():
+      topic("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_topic = strlen(this->topic);
+      varToArr(outbuffer + offset, length_topic);
+      offset += 4;
+      memcpy(outbuffer + offset, this->topic, length_topic);
+      offset += length_topic;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_topic;
+      arrToVar(length_topic, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_topic; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_topic-1]=0;
+      this->topic = (char *)(inbuffer + offset-1);
+      offset += length_topic;
+     return offset;
+    }
+
+    const char * getType(){ return DEMUXDELETE; };
+    const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; };
+
+  };
+
+  class DemuxDeleteResponse : public ros::Msg
+  {
+    public:
+
+    DemuxDeleteResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return DEMUXDELETE; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class DemuxDelete {
+    public:
+    typedef DemuxDeleteRequest Request;
+    typedef DemuxDeleteResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/topic_tools/DemuxList.h b/otto_controller_source/Inc/topic_tools/DemuxList.h
new file mode 100644 (file)
index 0000000..0553329
--- /dev/null
@@ -0,0 +1,107 @@
+#ifndef _ROS_SERVICE_DemuxList_h
+#define _ROS_SERVICE_DemuxList_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace topic_tools
+{
+
+static const char DEMUXLIST[] = "topic_tools/DemuxList";
+
+  class DemuxListRequest : public ros::Msg
+  {
+    public:
+
+    DemuxListRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return DEMUXLIST; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class DemuxListResponse : public ros::Msg
+  {
+    public:
+      uint32_t topics_length;
+      typedef char* _topics_type;
+      _topics_type st_topics;
+      _topics_type * topics;
+
+    DemuxListResponse():
+      topics_length(0), topics(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->topics_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->topics_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->topics_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->topics_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->topics_length);
+      for( uint32_t i = 0; i < topics_length; i++){
+      uint32_t length_topicsi = strlen(this->topics[i]);
+      varToArr(outbuffer + offset, length_topicsi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->topics[i], length_topicsi);
+      offset += length_topicsi;
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t topics_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->topics_length);
+      if(topics_lengthT > topics_length)
+        this->topics = (char**)realloc(this->topics, topics_lengthT * sizeof(char*));
+      topics_length = topics_lengthT;
+      for( uint32_t i = 0; i < topics_length; i++){
+      uint32_t length_st_topics;
+      arrToVar(length_st_topics, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_topics; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_topics-1]=0;
+      this->st_topics = (char *)(inbuffer + offset-1);
+      offset += length_st_topics;
+        memcpy( &(this->topics[i]), &(this->st_topics), sizeof(char*));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return DEMUXLIST; };
+    const char * getMD5(){ return "b0eef9a05d4e829092fc2f2c3c2aad3d"; };
+
+  };
+
+  class DemuxList {
+    public:
+    typedef DemuxListRequest Request;
+    typedef DemuxListResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/topic_tools/DemuxSelect.h b/otto_controller_source/Inc/topic_tools/DemuxSelect.h
new file mode 100644 (file)
index 0000000..17a6d9b
--- /dev/null
@@ -0,0 +1,104 @@
+#ifndef _ROS_SERVICE_DemuxSelect_h
+#define _ROS_SERVICE_DemuxSelect_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace topic_tools
+{
+
+static const char DEMUXSELECT[] = "topic_tools/DemuxSelect";
+
+  class DemuxSelectRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _topic_type;
+      _topic_type topic;
+
+    DemuxSelectRequest():
+      topic("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_topic = strlen(this->topic);
+      varToArr(outbuffer + offset, length_topic);
+      offset += 4;
+      memcpy(outbuffer + offset, this->topic, length_topic);
+      offset += length_topic;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_topic;
+      arrToVar(length_topic, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_topic; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_topic-1]=0;
+      this->topic = (char *)(inbuffer + offset-1);
+      offset += length_topic;
+     return offset;
+    }
+
+    const char * getType(){ return DEMUXSELECT; };
+    const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; };
+
+  };
+
+  class DemuxSelectResponse : public ros::Msg
+  {
+    public:
+      typedef const char* _prev_topic_type;
+      _prev_topic_type prev_topic;
+
+    DemuxSelectResponse():
+      prev_topic("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_prev_topic = strlen(this->prev_topic);
+      varToArr(outbuffer + offset, length_prev_topic);
+      offset += 4;
+      memcpy(outbuffer + offset, this->prev_topic, length_prev_topic);
+      offset += length_prev_topic;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_prev_topic;
+      arrToVar(length_prev_topic, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_prev_topic; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_prev_topic-1]=0;
+      this->prev_topic = (char *)(inbuffer + offset-1);
+      offset += length_prev_topic;
+     return offset;
+    }
+
+    const char * getType(){ return DEMUXSELECT; };
+    const char * getMD5(){ return "3db0a473debdbafea387c9e49358c320"; };
+
+  };
+
+  class DemuxSelect {
+    public:
+    typedef DemuxSelectRequest Request;
+    typedef DemuxSelectResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/topic_tools/MuxAdd.h b/otto_controller_source/Inc/topic_tools/MuxAdd.h
new file mode 100644 (file)
index 0000000..25a649a
--- /dev/null
@@ -0,0 +1,87 @@
+#ifndef _ROS_SERVICE_MuxAdd_h
+#define _ROS_SERVICE_MuxAdd_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace topic_tools
+{
+
+static const char MUXADD[] = "topic_tools/MuxAdd";
+
+  class MuxAddRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _topic_type;
+      _topic_type topic;
+
+    MuxAddRequest():
+      topic("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_topic = strlen(this->topic);
+      varToArr(outbuffer + offset, length_topic);
+      offset += 4;
+      memcpy(outbuffer + offset, this->topic, length_topic);
+      offset += length_topic;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_topic;
+      arrToVar(length_topic, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_topic; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_topic-1]=0;
+      this->topic = (char *)(inbuffer + offset-1);
+      offset += length_topic;
+     return offset;
+    }
+
+    const char * getType(){ return MUXADD; };
+    const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; };
+
+  };
+
+  class MuxAddResponse : public ros::Msg
+  {
+    public:
+
+    MuxAddResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return MUXADD; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class MuxAdd {
+    public:
+    typedef MuxAddRequest Request;
+    typedef MuxAddResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/topic_tools/MuxDelete.h b/otto_controller_source/Inc/topic_tools/MuxDelete.h
new file mode 100644 (file)
index 0000000..3672ad5
--- /dev/null
@@ -0,0 +1,87 @@
+#ifndef _ROS_SERVICE_MuxDelete_h
+#define _ROS_SERVICE_MuxDelete_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace topic_tools
+{
+
+static const char MUXDELETE[] = "topic_tools/MuxDelete";
+
+  class MuxDeleteRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _topic_type;
+      _topic_type topic;
+
+    MuxDeleteRequest():
+      topic("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_topic = strlen(this->topic);
+      varToArr(outbuffer + offset, length_topic);
+      offset += 4;
+      memcpy(outbuffer + offset, this->topic, length_topic);
+      offset += length_topic;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_topic;
+      arrToVar(length_topic, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_topic; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_topic-1]=0;
+      this->topic = (char *)(inbuffer + offset-1);
+      offset += length_topic;
+     return offset;
+    }
+
+    const char * getType(){ return MUXDELETE; };
+    const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; };
+
+  };
+
+  class MuxDeleteResponse : public ros::Msg
+  {
+    public:
+
+    MuxDeleteResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return MUXDELETE; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class MuxDelete {
+    public:
+    typedef MuxDeleteRequest Request;
+    typedef MuxDeleteResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/topic_tools/MuxList.h b/otto_controller_source/Inc/topic_tools/MuxList.h
new file mode 100644 (file)
index 0000000..5d7936d
--- /dev/null
@@ -0,0 +1,107 @@
+#ifndef _ROS_SERVICE_MuxList_h
+#define _ROS_SERVICE_MuxList_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace topic_tools
+{
+
+static const char MUXLIST[] = "topic_tools/MuxList";
+
+  class MuxListRequest : public ros::Msg
+  {
+    public:
+
+    MuxListRequest()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return MUXLIST; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class MuxListResponse : public ros::Msg
+  {
+    public:
+      uint32_t topics_length;
+      typedef char* _topics_type;
+      _topics_type st_topics;
+      _topics_type * topics;
+
+    MuxListResponse():
+      topics_length(0), topics(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->topics_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->topics_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->topics_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->topics_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->topics_length);
+      for( uint32_t i = 0; i < topics_length; i++){
+      uint32_t length_topicsi = strlen(this->topics[i]);
+      varToArr(outbuffer + offset, length_topicsi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->topics[i], length_topicsi);
+      offset += length_topicsi;
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t topics_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      topics_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->topics_length);
+      if(topics_lengthT > topics_length)
+        this->topics = (char**)realloc(this->topics, topics_lengthT * sizeof(char*));
+      topics_length = topics_lengthT;
+      for( uint32_t i = 0; i < topics_length; i++){
+      uint32_t length_st_topics;
+      arrToVar(length_st_topics, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_topics; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_topics-1]=0;
+      this->st_topics = (char *)(inbuffer + offset-1);
+      offset += length_st_topics;
+        memcpy( &(this->topics[i]), &(this->st_topics), sizeof(char*));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return MUXLIST; };
+    const char * getMD5(){ return "b0eef9a05d4e829092fc2f2c3c2aad3d"; };
+
+  };
+
+  class MuxList {
+    public:
+    typedef MuxListRequest Request;
+    typedef MuxListResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/topic_tools/MuxSelect.h b/otto_controller_source/Inc/topic_tools/MuxSelect.h
new file mode 100644 (file)
index 0000000..67324a8
--- /dev/null
@@ -0,0 +1,104 @@
+#ifndef _ROS_SERVICE_MuxSelect_h
+#define _ROS_SERVICE_MuxSelect_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace topic_tools
+{
+
+static const char MUXSELECT[] = "topic_tools/MuxSelect";
+
+  class MuxSelectRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _topic_type;
+      _topic_type topic;
+
+    MuxSelectRequest():
+      topic("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_topic = strlen(this->topic);
+      varToArr(outbuffer + offset, length_topic);
+      offset += 4;
+      memcpy(outbuffer + offset, this->topic, length_topic);
+      offset += length_topic;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_topic;
+      arrToVar(length_topic, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_topic; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_topic-1]=0;
+      this->topic = (char *)(inbuffer + offset-1);
+      offset += length_topic;
+     return offset;
+    }
+
+    const char * getType(){ return MUXSELECT; };
+    const char * getMD5(){ return "d8f94bae31b356b24d0427f80426d0c3"; };
+
+  };
+
+  class MuxSelectResponse : public ros::Msg
+  {
+    public:
+      typedef const char* _prev_topic_type;
+      _prev_topic_type prev_topic;
+
+    MuxSelectResponse():
+      prev_topic("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_prev_topic = strlen(this->prev_topic);
+      varToArr(outbuffer + offset, length_prev_topic);
+      offset += 4;
+      memcpy(outbuffer + offset, this->prev_topic, length_prev_topic);
+      offset += length_prev_topic;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_prev_topic;
+      arrToVar(length_prev_topic, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_prev_topic; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_prev_topic-1]=0;
+      this->prev_topic = (char *)(inbuffer + offset-1);
+      offset += length_prev_topic;
+     return offset;
+    }
+
+    const char * getType(){ return MUXSELECT; };
+    const char * getMD5(){ return "3db0a473debdbafea387c9e49358c320"; };
+
+  };
+
+  class MuxSelect {
+    public:
+    typedef MuxSelectRequest Request;
+    typedef MuxSelectResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/trajectory_msgs/JointTrajectory.h b/otto_controller_source/Inc/trajectory_msgs/JointTrajectory.h
new file mode 100644 (file)
index 0000000..a68dbbb
--- /dev/null
@@ -0,0 +1,107 @@
+#ifndef _ROS_trajectory_msgs_JointTrajectory_h
+#define _ROS_trajectory_msgs_JointTrajectory_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "trajectory_msgs/JointTrajectoryPoint.h"
+
+namespace trajectory_msgs
+{
+
+  class JointTrajectory : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t joint_names_length;
+      typedef char* _joint_names_type;
+      _joint_names_type st_joint_names;
+      _joint_names_type * joint_names;
+      uint32_t points_length;
+      typedef trajectory_msgs::JointTrajectoryPoint _points_type;
+      _points_type st_points;
+      _points_type * points;
+
+    JointTrajectory():
+      header(),
+      joint_names_length(0), joint_names(NULL),
+      points_length(0), points(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->joint_names_length);
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_joint_namesi = strlen(this->joint_names[i]);
+      varToArr(outbuffer + offset, length_joint_namesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi);
+      offset += length_joint_namesi;
+      }
+      *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->points_length);
+      for( uint32_t i = 0; i < points_length; i++){
+      offset += this->points[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->joint_names_length);
+      if(joint_names_lengthT > joint_names_length)
+        this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*));
+      joint_names_length = joint_names_lengthT;
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_st_joint_names;
+      arrToVar(length_st_joint_names, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_joint_names-1]=0;
+      this->st_joint_names = (char *)(inbuffer + offset-1);
+      offset += length_st_joint_names;
+        memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*));
+      }
+      uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->points_length);
+      if(points_lengthT > points_length)
+        this->points = (trajectory_msgs::JointTrajectoryPoint*)realloc(this->points, points_lengthT * sizeof(trajectory_msgs::JointTrajectoryPoint));
+      points_length = points_lengthT;
+      for( uint32_t i = 0; i < points_length; i++){
+      offset += this->st_points.deserialize(inbuffer + offset);
+        memcpy( &(this->points[i]), &(this->st_points), sizeof(trajectory_msgs::JointTrajectoryPoint));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "trajectory_msgs/JointTrajectory"; };
+    const char * getMD5(){ return "65b4f94a94d1ed67169da35a02f33d3f"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/trajectory_msgs/JointTrajectoryPoint.h b/otto_controller_source/Inc/trajectory_msgs/JointTrajectoryPoint.h
new file mode 100644 (file)
index 0000000..e49e587
--- /dev/null
@@ -0,0 +1,162 @@
+#ifndef _ROS_trajectory_msgs_JointTrajectoryPoint_h
+#define _ROS_trajectory_msgs_JointTrajectoryPoint_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "ros/duration.h"
+
+namespace trajectory_msgs
+{
+
+  class JointTrajectoryPoint : public ros::Msg
+  {
+    public:
+      uint32_t positions_length;
+      typedef float _positions_type;
+      _positions_type st_positions;
+      _positions_type * positions;
+      uint32_t velocities_length;
+      typedef float _velocities_type;
+      _velocities_type st_velocities;
+      _velocities_type * velocities;
+      uint32_t accelerations_length;
+      typedef float _accelerations_type;
+      _accelerations_type st_accelerations;
+      _accelerations_type * accelerations;
+      uint32_t effort_length;
+      typedef float _effort_type;
+      _effort_type st_effort;
+      _effort_type * effort;
+      typedef ros::Duration _time_from_start_type;
+      _time_from_start_type time_from_start;
+
+    JointTrajectoryPoint():
+      positions_length(0), positions(NULL),
+      velocities_length(0), velocities(NULL),
+      accelerations_length(0), accelerations(NULL),
+      effort_length(0), effort(NULL),
+      time_from_start()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->positions_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->positions_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->positions_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->positions_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->positions_length);
+      for( uint32_t i = 0; i < positions_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->positions[i]);
+      }
+      *(outbuffer + offset + 0) = (this->velocities_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->velocities_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->velocities_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->velocities_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->velocities_length);
+      for( uint32_t i = 0; i < velocities_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->velocities[i]);
+      }
+      *(outbuffer + offset + 0) = (this->accelerations_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->accelerations_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->accelerations_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->accelerations_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->accelerations_length);
+      for( uint32_t i = 0; i < accelerations_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->accelerations[i]);
+      }
+      *(outbuffer + offset + 0) = (this->effort_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->effort_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->effort_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->effort_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->effort_length);
+      for( uint32_t i = 0; i < effort_length; i++){
+      offset += serializeAvrFloat64(outbuffer + offset, this->effort[i]);
+      }
+      *(outbuffer + offset + 0) = (this->time_from_start.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->time_from_start.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->time_from_start.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->time_from_start.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->time_from_start.sec);
+      *(outbuffer + offset + 0) = (this->time_from_start.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->time_from_start.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->time_from_start.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->time_from_start.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->time_from_start.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t positions_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      positions_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->positions_length);
+      if(positions_lengthT > positions_length)
+        this->positions = (float*)realloc(this->positions, positions_lengthT * sizeof(float));
+      positions_length = positions_lengthT;
+      for( uint32_t i = 0; i < positions_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_positions));
+        memcpy( &(this->positions[i]), &(this->st_positions), sizeof(float));
+      }
+      uint32_t velocities_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->velocities_length);
+      if(velocities_lengthT > velocities_length)
+        this->velocities = (float*)realloc(this->velocities, velocities_lengthT * sizeof(float));
+      velocities_length = velocities_lengthT;
+      for( uint32_t i = 0; i < velocities_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_velocities));
+        memcpy( &(this->velocities[i]), &(this->st_velocities), sizeof(float));
+      }
+      uint32_t accelerations_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->accelerations_length);
+      if(accelerations_lengthT > accelerations_length)
+        this->accelerations = (float*)realloc(this->accelerations, accelerations_lengthT * sizeof(float));
+      accelerations_length = accelerations_lengthT;
+      for( uint32_t i = 0; i < accelerations_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_accelerations));
+        memcpy( &(this->accelerations[i]), &(this->st_accelerations), sizeof(float));
+      }
+      uint32_t effort_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      effort_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->effort_length);
+      if(effort_lengthT > effort_length)
+        this->effort = (float*)realloc(this->effort, effort_lengthT * sizeof(float));
+      effort_length = effort_lengthT;
+      for( uint32_t i = 0; i < effort_length; i++){
+      offset += deserializeAvrFloat64(inbuffer + offset, &(this->st_effort));
+        memcpy( &(this->effort[i]), &(this->st_effort), sizeof(float));
+      }
+      this->time_from_start.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->time_from_start.sec);
+      this->time_from_start.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->time_from_start.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return "trajectory_msgs/JointTrajectoryPoint"; };
+    const char * getMD5(){ return "f3cd1e1c4d320c79d6985c904ae5dcd3"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/trajectory_msgs/MultiDOFJointTrajectory.h b/otto_controller_source/Inc/trajectory_msgs/MultiDOFJointTrajectory.h
new file mode 100644 (file)
index 0000000..50add38
--- /dev/null
@@ -0,0 +1,107 @@
+#ifndef _ROS_trajectory_msgs_MultiDOFJointTrajectory_h
+#define _ROS_trajectory_msgs_MultiDOFJointTrajectory_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "trajectory_msgs/MultiDOFJointTrajectoryPoint.h"
+
+namespace trajectory_msgs
+{
+
+  class MultiDOFJointTrajectory : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      uint32_t joint_names_length;
+      typedef char* _joint_names_type;
+      _joint_names_type st_joint_names;
+      _joint_names_type * joint_names;
+      uint32_t points_length;
+      typedef trajectory_msgs::MultiDOFJointTrajectoryPoint _points_type;
+      _points_type st_points;
+      _points_type * points;
+
+    MultiDOFJointTrajectory():
+      header(),
+      joint_names_length(0), joint_names(NULL),
+      points_length(0), points(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->joint_names_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->joint_names_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->joint_names_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->joint_names_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->joint_names_length);
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_joint_namesi = strlen(this->joint_names[i]);
+      varToArr(outbuffer + offset, length_joint_namesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->joint_names[i], length_joint_namesi);
+      offset += length_joint_namesi;
+      }
+      *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->points_length);
+      for( uint32_t i = 0; i < points_length; i++){
+      offset += this->points[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t joint_names_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      joint_names_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->joint_names_length);
+      if(joint_names_lengthT > joint_names_length)
+        this->joint_names = (char**)realloc(this->joint_names, joint_names_lengthT * sizeof(char*));
+      joint_names_length = joint_names_lengthT;
+      for( uint32_t i = 0; i < joint_names_length; i++){
+      uint32_t length_st_joint_names;
+      arrToVar(length_st_joint_names, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_joint_names; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_joint_names-1]=0;
+      this->st_joint_names = (char *)(inbuffer + offset-1);
+      offset += length_st_joint_names;
+        memcpy( &(this->joint_names[i]), &(this->st_joint_names), sizeof(char*));
+      }
+      uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->points_length);
+      if(points_lengthT > points_length)
+        this->points = (trajectory_msgs::MultiDOFJointTrajectoryPoint*)realloc(this->points, points_lengthT * sizeof(trajectory_msgs::MultiDOFJointTrajectoryPoint));
+      points_length = points_lengthT;
+      for( uint32_t i = 0; i < points_length; i++){
+      offset += this->st_points.deserialize(inbuffer + offset);
+        memcpy( &(this->points[i]), &(this->st_points), sizeof(trajectory_msgs::MultiDOFJointTrajectoryPoint));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "trajectory_msgs/MultiDOFJointTrajectory"; };
+    const char * getMD5(){ return "ef145a45a5f47b77b7f5cdde4b16c942"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/trajectory_msgs/MultiDOFJointTrajectoryPoint.h b/otto_controller_source/Inc/trajectory_msgs/MultiDOFJointTrajectoryPoint.h
new file mode 100644 (file)
index 0000000..7aac8c5
--- /dev/null
@@ -0,0 +1,139 @@
+#ifndef _ROS_trajectory_msgs_MultiDOFJointTrajectoryPoint_h
+#define _ROS_trajectory_msgs_MultiDOFJointTrajectoryPoint_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Transform.h"
+#include "geometry_msgs/Twist.h"
+#include "ros/duration.h"
+
+namespace trajectory_msgs
+{
+
+  class MultiDOFJointTrajectoryPoint : public ros::Msg
+  {
+    public:
+      uint32_t transforms_length;
+      typedef geometry_msgs::Transform _transforms_type;
+      _transforms_type st_transforms;
+      _transforms_type * transforms;
+      uint32_t velocities_length;
+      typedef geometry_msgs::Twist _velocities_type;
+      _velocities_type st_velocities;
+      _velocities_type * velocities;
+      uint32_t accelerations_length;
+      typedef geometry_msgs::Twist _accelerations_type;
+      _accelerations_type st_accelerations;
+      _accelerations_type * accelerations;
+      typedef ros::Duration _time_from_start_type;
+      _time_from_start_type time_from_start;
+
+    MultiDOFJointTrajectoryPoint():
+      transforms_length(0), transforms(NULL),
+      velocities_length(0), velocities(NULL),
+      accelerations_length(0), accelerations(NULL),
+      time_from_start()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->transforms_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->transforms_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->transforms_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->transforms_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->transforms_length);
+      for( uint32_t i = 0; i < transforms_length; i++){
+      offset += this->transforms[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->velocities_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->velocities_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->velocities_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->velocities_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->velocities_length);
+      for( uint32_t i = 0; i < velocities_length; i++){
+      offset += this->velocities[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->accelerations_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->accelerations_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->accelerations_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->accelerations_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->accelerations_length);
+      for( uint32_t i = 0; i < accelerations_length; i++){
+      offset += this->accelerations[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->time_from_start.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->time_from_start.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->time_from_start.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->time_from_start.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->time_from_start.sec);
+      *(outbuffer + offset + 0) = (this->time_from_start.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->time_from_start.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->time_from_start.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->time_from_start.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->time_from_start.nsec);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t transforms_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      transforms_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->transforms_length);
+      if(transforms_lengthT > transforms_length)
+        this->transforms = (geometry_msgs::Transform*)realloc(this->transforms, transforms_lengthT * sizeof(geometry_msgs::Transform));
+      transforms_length = transforms_lengthT;
+      for( uint32_t i = 0; i < transforms_length; i++){
+      offset += this->st_transforms.deserialize(inbuffer + offset);
+        memcpy( &(this->transforms[i]), &(this->st_transforms), sizeof(geometry_msgs::Transform));
+      }
+      uint32_t velocities_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      velocities_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->velocities_length);
+      if(velocities_lengthT > velocities_length)
+        this->velocities = (geometry_msgs::Twist*)realloc(this->velocities, velocities_lengthT * sizeof(geometry_msgs::Twist));
+      velocities_length = velocities_lengthT;
+      for( uint32_t i = 0; i < velocities_length; i++){
+      offset += this->st_velocities.deserialize(inbuffer + offset);
+        memcpy( &(this->velocities[i]), &(this->st_velocities), sizeof(geometry_msgs::Twist));
+      }
+      uint32_t accelerations_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      accelerations_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->accelerations_length);
+      if(accelerations_lengthT > accelerations_length)
+        this->accelerations = (geometry_msgs::Twist*)realloc(this->accelerations, accelerations_lengthT * sizeof(geometry_msgs::Twist));
+      accelerations_length = accelerations_lengthT;
+      for( uint32_t i = 0; i < accelerations_length; i++){
+      offset += this->st_accelerations.deserialize(inbuffer + offset);
+        memcpy( &(this->accelerations[i]), &(this->st_accelerations), sizeof(geometry_msgs::Twist));
+      }
+      this->time_from_start.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->time_from_start.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->time_from_start.sec);
+      this->time_from_start.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->time_from_start.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->time_from_start.nsec);
+     return offset;
+    }
+
+    const char * getType(){ return "trajectory_msgs/MultiDOFJointTrajectoryPoint"; };
+    const char * getMD5(){ return "3ebe08d1abd5b65862d50e09430db776"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/turtle_actionlib/ShapeAction.h b/otto_controller_source/Inc/turtle_actionlib/ShapeAction.h
new file mode 100644 (file)
index 0000000..937c72d
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_turtle_actionlib_ShapeAction_h
+#define _ROS_turtle_actionlib_ShapeAction_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "turtle_actionlib/ShapeActionGoal.h"
+#include "turtle_actionlib/ShapeActionResult.h"
+#include "turtle_actionlib/ShapeActionFeedback.h"
+
+namespace turtle_actionlib
+{
+
+  class ShapeAction : public ros::Msg
+  {
+    public:
+      typedef turtle_actionlib::ShapeActionGoal _action_goal_type;
+      _action_goal_type action_goal;
+      typedef turtle_actionlib::ShapeActionResult _action_result_type;
+      _action_result_type action_result;
+      typedef turtle_actionlib::ShapeActionFeedback _action_feedback_type;
+      _action_feedback_type action_feedback;
+
+    ShapeAction():
+      action_goal(),
+      action_result(),
+      action_feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->action_goal.serialize(outbuffer + offset);
+      offset += this->action_result.serialize(outbuffer + offset);
+      offset += this->action_feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->action_goal.deserialize(inbuffer + offset);
+      offset += this->action_result.deserialize(inbuffer + offset);
+      offset += this->action_feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "turtle_actionlib/ShapeAction"; };
+    const char * getMD5(){ return "d73b17d6237a925511f5d7727a1dc903"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/turtle_actionlib/ShapeActionFeedback.h b/otto_controller_source/Inc/turtle_actionlib/ShapeActionFeedback.h
new file mode 100644 (file)
index 0000000..f9ee304
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_turtle_actionlib_ShapeActionFeedback_h
+#define _ROS_turtle_actionlib_ShapeActionFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "turtle_actionlib/ShapeFeedback.h"
+
+namespace turtle_actionlib
+{
+
+  class ShapeActionFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef turtle_actionlib::ShapeFeedback _feedback_type;
+      _feedback_type feedback;
+
+    ShapeActionFeedback():
+      header(),
+      status(),
+      feedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->feedback.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->feedback.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "turtle_actionlib/ShapeActionFeedback"; };
+    const char * getMD5(){ return "aae20e09065c3809e8a8e87c4c8953fd"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/turtle_actionlib/ShapeActionGoal.h b/otto_controller_source/Inc/turtle_actionlib/ShapeActionGoal.h
new file mode 100644 (file)
index 0000000..afb9b01
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_turtle_actionlib_ShapeActionGoal_h
+#define _ROS_turtle_actionlib_ShapeActionGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalID.h"
+#include "turtle_actionlib/ShapeGoal.h"
+
+namespace turtle_actionlib
+{
+
+  class ShapeActionGoal : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalID _goal_id_type;
+      _goal_id_type goal_id;
+      typedef turtle_actionlib::ShapeGoal _goal_type;
+      _goal_type goal;
+
+    ShapeActionGoal():
+      header(),
+      goal_id(),
+      goal()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->goal_id.serialize(outbuffer + offset);
+      offset += this->goal.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->goal_id.deserialize(inbuffer + offset);
+      offset += this->goal.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "turtle_actionlib/ShapeActionGoal"; };
+    const char * getMD5(){ return "dbfccd187f2ec9c593916447ffd6cc77"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/turtle_actionlib/ShapeActionResult.h b/otto_controller_source/Inc/turtle_actionlib/ShapeActionResult.h
new file mode 100644 (file)
index 0000000..dc42883
--- /dev/null
@@ -0,0 +1,56 @@
+#ifndef _ROS_turtle_actionlib_ShapeActionResult_h
+#define _ROS_turtle_actionlib_ShapeActionResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "actionlib_msgs/GoalStatus.h"
+#include "turtle_actionlib/ShapeResult.h"
+
+namespace turtle_actionlib
+{
+
+  class ShapeActionResult : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef actionlib_msgs::GoalStatus _status_type;
+      _status_type status;
+      typedef turtle_actionlib::ShapeResult _result_type;
+      _result_type result;
+
+    ShapeActionResult():
+      header(),
+      status(),
+      result()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->status.serialize(outbuffer + offset);
+      offset += this->result.serialize(outbuffer + offset);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->status.deserialize(inbuffer + offset);
+      offset += this->result.deserialize(inbuffer + offset);
+     return offset;
+    }
+
+    const char * getType(){ return "turtle_actionlib/ShapeActionResult"; };
+    const char * getMD5(){ return "c8d13d5d140f1047a2e4d3bf5c045822"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/turtle_actionlib/ShapeFeedback.h b/otto_controller_source/Inc/turtle_actionlib/ShapeFeedback.h
new file mode 100644 (file)
index 0000000..fbad990
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef _ROS_turtle_actionlib_ShapeFeedback_h
+#define _ROS_turtle_actionlib_ShapeFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace turtle_actionlib
+{
+
+  class ShapeFeedback : public ros::Msg
+  {
+    public:
+
+    ShapeFeedback()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return "turtle_actionlib/ShapeFeedback"; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/turtle_actionlib/ShapeGoal.h b/otto_controller_source/Inc/turtle_actionlib/ShapeGoal.h
new file mode 100644 (file)
index 0000000..4b63044
--- /dev/null
@@ -0,0 +1,86 @@
+#ifndef _ROS_turtle_actionlib_ShapeGoal_h
+#define _ROS_turtle_actionlib_ShapeGoal_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace turtle_actionlib
+{
+
+  class ShapeGoal : public ros::Msg
+  {
+    public:
+      typedef int32_t _edges_type;
+      _edges_type edges;
+      typedef float _radius_type;
+      _radius_type radius;
+
+    ShapeGoal():
+      edges(0),
+      radius(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_edges;
+      u_edges.real = this->edges;
+      *(outbuffer + offset + 0) = (u_edges.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_edges.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_edges.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_edges.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->edges);
+      union {
+        float real;
+        uint32_t base;
+      } u_radius;
+      u_radius.real = this->radius;
+      *(outbuffer + offset + 0) = (u_radius.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_radius.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_radius.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_radius.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->radius);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_edges;
+      u_edges.base = 0;
+      u_edges.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_edges.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_edges.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_edges.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->edges = u_edges.real;
+      offset += sizeof(this->edges);
+      union {
+        float real;
+        uint32_t base;
+      } u_radius;
+      u_radius.base = 0;
+      u_radius.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_radius.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_radius.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_radius.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->radius = u_radius.real;
+      offset += sizeof(this->radius);
+     return offset;
+    }
+
+    const char * getType(){ return "turtle_actionlib/ShapeGoal"; };
+    const char * getMD5(){ return "3b9202ab7292cebe5a95ab2bf6b9c091"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/turtle_actionlib/ShapeResult.h b/otto_controller_source/Inc/turtle_actionlib/ShapeResult.h
new file mode 100644 (file)
index 0000000..1e8407b
--- /dev/null
@@ -0,0 +1,86 @@
+#ifndef _ROS_turtle_actionlib_ShapeResult_h
+#define _ROS_turtle_actionlib_ShapeResult_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace turtle_actionlib
+{
+
+  class ShapeResult : public ros::Msg
+  {
+    public:
+      typedef float _interior_angle_type;
+      _interior_angle_type interior_angle;
+      typedef float _apothem_type;
+      _apothem_type apothem;
+
+    ShapeResult():
+      interior_angle(0),
+      apothem(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_interior_angle;
+      u_interior_angle.real = this->interior_angle;
+      *(outbuffer + offset + 0) = (u_interior_angle.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_interior_angle.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_interior_angle.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_interior_angle.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->interior_angle);
+      union {
+        float real;
+        uint32_t base;
+      } u_apothem;
+      u_apothem.real = this->apothem;
+      *(outbuffer + offset + 0) = (u_apothem.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_apothem.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_apothem.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_apothem.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->apothem);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_interior_angle;
+      u_interior_angle.base = 0;
+      u_interior_angle.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_interior_angle.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_interior_angle.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_interior_angle.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->interior_angle = u_interior_angle.real;
+      offset += sizeof(this->interior_angle);
+      union {
+        float real;
+        uint32_t base;
+      } u_apothem;
+      u_apothem.base = 0;
+      u_apothem.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_apothem.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_apothem.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_apothem.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->apothem = u_apothem.real;
+      offset += sizeof(this->apothem);
+     return offset;
+    }
+
+    const char * getType(){ return "turtle_actionlib/ShapeResult"; };
+    const char * getMD5(){ return "b06c6e2225f820dbc644270387cd1a7c"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/turtle_actionlib/Velocity.h b/otto_controller_source/Inc/turtle_actionlib/Velocity.h
new file mode 100644 (file)
index 0000000..4c540a9
--- /dev/null
@@ -0,0 +1,86 @@
+#ifndef _ROS_turtle_actionlib_Velocity_h
+#define _ROS_turtle_actionlib_Velocity_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace turtle_actionlib
+{
+
+  class Velocity : public ros::Msg
+  {
+    public:
+      typedef float _linear_type;
+      _linear_type linear;
+      typedef float _angular_type;
+      _angular_type angular;
+
+    Velocity():
+      linear(0),
+      angular(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_linear;
+      u_linear.real = this->linear;
+      *(outbuffer + offset + 0) = (u_linear.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_linear.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_linear.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_linear.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->linear);
+      union {
+        float real;
+        uint32_t base;
+      } u_angular;
+      u_angular.real = this->angular;
+      *(outbuffer + offset + 0) = (u_angular.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_angular.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_angular.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_angular.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->angular);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_linear;
+      u_linear.base = 0;
+      u_linear.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_linear.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_linear.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_linear.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->linear = u_linear.real;
+      offset += sizeof(this->linear);
+      union {
+        float real;
+        uint32_t base;
+      } u_angular;
+      u_angular.base = 0;
+      u_angular.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_angular.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_angular.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_angular.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->angular = u_angular.real;
+      offset += sizeof(this->angular);
+     return offset;
+    }
+
+    const char * getType(){ return "turtle_actionlib/Velocity"; };
+    const char * getMD5(){ return "9d5c2dcd348ac8f76ce2a4307bd63a13"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/turtlesim/Color.h b/otto_controller_source/Inc/turtlesim/Color.h
new file mode 100644 (file)
index 0000000..3cdcc95
--- /dev/null
@@ -0,0 +1,59 @@
+#ifndef _ROS_turtlesim_Color_h
+#define _ROS_turtlesim_Color_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace turtlesim
+{
+
+  class Color : public ros::Msg
+  {
+    public:
+      typedef uint8_t _r_type;
+      _r_type r;
+      typedef uint8_t _g_type;
+      _g_type g;
+      typedef uint8_t _b_type;
+      _b_type b;
+
+    Color():
+      r(0),
+      g(0),
+      b(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->r >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->r);
+      *(outbuffer + offset + 0) = (this->g >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->g);
+      *(outbuffer + offset + 0) = (this->b >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->b);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->r =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->r);
+      this->g =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->g);
+      this->b =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->b);
+     return offset;
+    }
+
+    const char * getType(){ return "turtlesim/Color"; };
+    const char * getMD5(){ return "353891e354491c51aabe32df673fb446"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/turtlesim/Kill.h b/otto_controller_source/Inc/turtlesim/Kill.h
new file mode 100644 (file)
index 0000000..086f2bb
--- /dev/null
@@ -0,0 +1,87 @@
+#ifndef _ROS_SERVICE_Kill_h
+#define _ROS_SERVICE_Kill_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace turtlesim
+{
+
+static const char KILL[] = "turtlesim/Kill";
+
+  class KillRequest : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+
+    KillRequest():
+      name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+     return offset;
+    }
+
+    const char * getType(){ return KILL; };
+    const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; };
+
+  };
+
+  class KillResponse : public ros::Msg
+  {
+    public:
+
+    KillResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return KILL; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class Kill {
+    public:
+    typedef KillRequest Request;
+    typedef KillResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/turtlesim/Pose.h b/otto_controller_source/Inc/turtlesim/Pose.h
new file mode 100644 (file)
index 0000000..3f5386f
--- /dev/null
@@ -0,0 +1,158 @@
+#ifndef _ROS_turtlesim_Pose_h
+#define _ROS_turtlesim_Pose_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace turtlesim
+{
+
+  class Pose : public ros::Msg
+  {
+    public:
+      typedef float _x_type;
+      _x_type x;
+      typedef float _y_type;
+      _y_type y;
+      typedef float _theta_type;
+      _theta_type theta;
+      typedef float _linear_velocity_type;
+      _linear_velocity_type linear_velocity;
+      typedef float _angular_velocity_type;
+      _angular_velocity_type angular_velocity;
+
+    Pose():
+      x(0),
+      y(0),
+      theta(0),
+      linear_velocity(0),
+      angular_velocity(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_x;
+      u_x.real = this->x;
+      *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->x);
+      union {
+        float real;
+        uint32_t base;
+      } u_y;
+      u_y.real = this->y;
+      *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->y);
+      union {
+        float real;
+        uint32_t base;
+      } u_theta;
+      u_theta.real = this->theta;
+      *(outbuffer + offset + 0) = (u_theta.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_theta.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_theta.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_theta.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->theta);
+      union {
+        float real;
+        uint32_t base;
+      } u_linear_velocity;
+      u_linear_velocity.real = this->linear_velocity;
+      *(outbuffer + offset + 0) = (u_linear_velocity.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_linear_velocity.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_linear_velocity.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_linear_velocity.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->linear_velocity);
+      union {
+        float real;
+        uint32_t base;
+      } u_angular_velocity;
+      u_angular_velocity.real = this->angular_velocity;
+      *(outbuffer + offset + 0) = (u_angular_velocity.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_angular_velocity.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_angular_velocity.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_angular_velocity.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->angular_velocity);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_x;
+      u_x.base = 0;
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->x = u_x.real;
+      offset += sizeof(this->x);
+      union {
+        float real;
+        uint32_t base;
+      } u_y;
+      u_y.base = 0;
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->y = u_y.real;
+      offset += sizeof(this->y);
+      union {
+        float real;
+        uint32_t base;
+      } u_theta;
+      u_theta.base = 0;
+      u_theta.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_theta.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_theta.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_theta.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->theta = u_theta.real;
+      offset += sizeof(this->theta);
+      union {
+        float real;
+        uint32_t base;
+      } u_linear_velocity;
+      u_linear_velocity.base = 0;
+      u_linear_velocity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_linear_velocity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_linear_velocity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_linear_velocity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->linear_velocity = u_linear_velocity.real;
+      offset += sizeof(this->linear_velocity);
+      union {
+        float real;
+        uint32_t base;
+      } u_angular_velocity;
+      u_angular_velocity.base = 0;
+      u_angular_velocity.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_angular_velocity.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_angular_velocity.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_angular_velocity.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->angular_velocity = u_angular_velocity.real;
+      offset += sizeof(this->angular_velocity);
+     return offset;
+    }
+
+    const char * getType(){ return "turtlesim/Pose"; };
+    const char * getMD5(){ return "863b248d5016ca62ea2e895ae5265cf9"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/turtlesim/SetPen.h b/otto_controller_source/Inc/turtlesim/SetPen.h
new file mode 100644 (file)
index 0000000..a0e32c0
--- /dev/null
@@ -0,0 +1,105 @@
+#ifndef _ROS_SERVICE_SetPen_h
+#define _ROS_SERVICE_SetPen_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace turtlesim
+{
+
+static const char SETPEN[] = "turtlesim/SetPen";
+
+  class SetPenRequest : public ros::Msg
+  {
+    public:
+      typedef uint8_t _r_type;
+      _r_type r;
+      typedef uint8_t _g_type;
+      _g_type g;
+      typedef uint8_t _b_type;
+      _b_type b;
+      typedef uint8_t _width_type;
+      _width_type width;
+      typedef uint8_t _off_type;
+      _off_type off;
+
+    SetPenRequest():
+      r(0),
+      g(0),
+      b(0),
+      width(0),
+      off(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->r >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->r);
+      *(outbuffer + offset + 0) = (this->g >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->g);
+      *(outbuffer + offset + 0) = (this->b >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->b);
+      *(outbuffer + offset + 0) = (this->width >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->width);
+      *(outbuffer + offset + 0) = (this->off >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->off);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->r =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->r);
+      this->g =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->g);
+      this->b =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->b);
+      this->width =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->width);
+      this->off =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->off);
+     return offset;
+    }
+
+    const char * getType(){ return SETPEN; };
+    const char * getMD5(){ return "9f452acce566bf0c0954594f69a8e41b"; };
+
+  };
+
+  class SetPenResponse : public ros::Msg
+  {
+    public:
+
+    SetPenResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return SETPEN; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class SetPen {
+    public:
+    typedef SetPenRequest Request;
+    typedef SetPenResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/turtlesim/Spawn.h b/otto_controller_source/Inc/turtlesim/Spawn.h
new file mode 100644 (file)
index 0000000..f69b42f
--- /dev/null
@@ -0,0 +1,176 @@
+#ifndef _ROS_SERVICE_Spawn_h
+#define _ROS_SERVICE_Spawn_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace turtlesim
+{
+
+static const char SPAWN[] = "turtlesim/Spawn";
+
+  class SpawnRequest : public ros::Msg
+  {
+    public:
+      typedef float _x_type;
+      _x_type x;
+      typedef float _y_type;
+      _y_type y;
+      typedef float _theta_type;
+      _theta_type theta;
+      typedef const char* _name_type;
+      _name_type name;
+
+    SpawnRequest():
+      x(0),
+      y(0),
+      theta(0),
+      name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_x;
+      u_x.real = this->x;
+      *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->x);
+      union {
+        float real;
+        uint32_t base;
+      } u_y;
+      u_y.real = this->y;
+      *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->y);
+      union {
+        float real;
+        uint32_t base;
+      } u_theta;
+      u_theta.real = this->theta;
+      *(outbuffer + offset + 0) = (u_theta.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_theta.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_theta.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_theta.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->theta);
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_x;
+      u_x.base = 0;
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->x = u_x.real;
+      offset += sizeof(this->x);
+      union {
+        float real;
+        uint32_t base;
+      } u_y;
+      u_y.base = 0;
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->y = u_y.real;
+      offset += sizeof(this->y);
+      union {
+        float real;
+        uint32_t base;
+      } u_theta;
+      u_theta.base = 0;
+      u_theta.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_theta.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_theta.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_theta.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->theta = u_theta.real;
+      offset += sizeof(this->theta);
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+     return offset;
+    }
+
+    const char * getType(){ return SPAWN; };
+    const char * getMD5(){ return "57f001c49ab7b11d699f8606c1f4f7ff"; };
+
+  };
+
+  class SpawnResponse : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+
+    SpawnResponse():
+      name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+     return offset;
+    }
+
+    const char * getType(){ return SPAWN; };
+    const char * getMD5(){ return "c1f3d28f1b044c871e6eff2e9fc3c667"; };
+
+  };
+
+  class Spawn {
+    public:
+    typedef SpawnRequest Request;
+    typedef SpawnResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/turtlesim/TeleportAbsolute.h b/otto_controller_source/Inc/turtlesim/TeleportAbsolute.h
new file mode 100644 (file)
index 0000000..c81489b
--- /dev/null
@@ -0,0 +1,142 @@
+#ifndef _ROS_SERVICE_TeleportAbsolute_h
+#define _ROS_SERVICE_TeleportAbsolute_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace turtlesim
+{
+
+static const char TELEPORTABSOLUTE[] = "turtlesim/TeleportAbsolute";
+
+  class TeleportAbsoluteRequest : public ros::Msg
+  {
+    public:
+      typedef float _x_type;
+      _x_type x;
+      typedef float _y_type;
+      _y_type y;
+      typedef float _theta_type;
+      _theta_type theta;
+
+    TeleportAbsoluteRequest():
+      x(0),
+      y(0),
+      theta(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_x;
+      u_x.real = this->x;
+      *(outbuffer + offset + 0) = (u_x.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_x.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_x.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_x.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->x);
+      union {
+        float real;
+        uint32_t base;
+      } u_y;
+      u_y.real = this->y;
+      *(outbuffer + offset + 0) = (u_y.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_y.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_y.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_y.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->y);
+      union {
+        float real;
+        uint32_t base;
+      } u_theta;
+      u_theta.real = this->theta;
+      *(outbuffer + offset + 0) = (u_theta.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_theta.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_theta.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_theta.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->theta);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_x;
+      u_x.base = 0;
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_x.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->x = u_x.real;
+      offset += sizeof(this->x);
+      union {
+        float real;
+        uint32_t base;
+      } u_y;
+      u_y.base = 0;
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_y.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->y = u_y.real;
+      offset += sizeof(this->y);
+      union {
+        float real;
+        uint32_t base;
+      } u_theta;
+      u_theta.base = 0;
+      u_theta.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_theta.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_theta.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_theta.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->theta = u_theta.real;
+      offset += sizeof(this->theta);
+     return offset;
+    }
+
+    const char * getType(){ return TELEPORTABSOLUTE; };
+    const char * getMD5(){ return "a130bc60ee6513855dc62ea83fcc5b20"; };
+
+  };
+
+  class TeleportAbsoluteResponse : public ros::Msg
+  {
+    public:
+
+    TeleportAbsoluteResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return TELEPORTABSOLUTE; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class TeleportAbsolute {
+    public:
+    typedef TeleportAbsoluteRequest Request;
+    typedef TeleportAbsoluteResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/turtlesim/TeleportRelative.h b/otto_controller_source/Inc/turtlesim/TeleportRelative.h
new file mode 100644 (file)
index 0000000..2da9668
--- /dev/null
@@ -0,0 +1,118 @@
+#ifndef _ROS_SERVICE_TeleportRelative_h
+#define _ROS_SERVICE_TeleportRelative_h
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace turtlesim
+{
+
+static const char TELEPORTRELATIVE[] = "turtlesim/TeleportRelative";
+
+  class TeleportRelativeRequest : public ros::Msg
+  {
+    public:
+      typedef float _linear_type;
+      _linear_type linear;
+      typedef float _angular_type;
+      _angular_type angular;
+
+    TeleportRelativeRequest():
+      linear(0),
+      angular(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_linear;
+      u_linear.real = this->linear;
+      *(outbuffer + offset + 0) = (u_linear.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_linear.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_linear.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_linear.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->linear);
+      union {
+        float real;
+        uint32_t base;
+      } u_angular;
+      u_angular.real = this->angular;
+      *(outbuffer + offset + 0) = (u_angular.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_angular.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_angular.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_angular.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->angular);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      union {
+        float real;
+        uint32_t base;
+      } u_linear;
+      u_linear.base = 0;
+      u_linear.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_linear.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_linear.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_linear.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->linear = u_linear.real;
+      offset += sizeof(this->linear);
+      union {
+        float real;
+        uint32_t base;
+      } u_angular;
+      u_angular.base = 0;
+      u_angular.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_angular.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_angular.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_angular.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->angular = u_angular.real;
+      offset += sizeof(this->angular);
+     return offset;
+    }
+
+    const char * getType(){ return TELEPORTRELATIVE; };
+    const char * getMD5(){ return "9d5c2dcd348ac8f76ce2a4307bd63a13"; };
+
+  };
+
+  class TeleportRelativeResponse : public ros::Msg
+  {
+    public:
+
+    TeleportRelativeResponse()
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+     return offset;
+    }
+
+    const char * getType(){ return TELEPORTRELATIVE; };
+    const char * getMD5(){ return "d41d8cd98f00b204e9800998ecf8427e"; };
+
+  };
+
+  class TeleportRelative {
+    public:
+    typedef TeleportRelativeRequest Request;
+    typedef TeleportRelativeResponse Response;
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/visualization_msgs/ImageMarker.h b/otto_controller_source/Inc/visualization_msgs/ImageMarker.h
new file mode 100644 (file)
index 0000000..cd8897d
--- /dev/null
@@ -0,0 +1,262 @@
+#ifndef _ROS_visualization_msgs_ImageMarker_h
+#define _ROS_visualization_msgs_ImageMarker_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Point.h"
+#include "std_msgs/ColorRGBA.h"
+#include "ros/duration.h"
+
+namespace visualization_msgs
+{
+
+  class ImageMarker : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef const char* _ns_type;
+      _ns_type ns;
+      typedef int32_t _id_type;
+      _id_type id;
+      typedef int32_t _type_type;
+      _type_type type;
+      typedef int32_t _action_type;
+      _action_type action;
+      typedef geometry_msgs::Point _position_type;
+      _position_type position;
+      typedef float _scale_type;
+      _scale_type scale;
+      typedef std_msgs::ColorRGBA _outline_color_type;
+      _outline_color_type outline_color;
+      typedef uint8_t _filled_type;
+      _filled_type filled;
+      typedef std_msgs::ColorRGBA _fill_color_type;
+      _fill_color_type fill_color;
+      typedef ros::Duration _lifetime_type;
+      _lifetime_type lifetime;
+      uint32_t points_length;
+      typedef geometry_msgs::Point _points_type;
+      _points_type st_points;
+      _points_type * points;
+      uint32_t outline_colors_length;
+      typedef std_msgs::ColorRGBA _outline_colors_type;
+      _outline_colors_type st_outline_colors;
+      _outline_colors_type * outline_colors;
+      enum { CIRCLE = 0 };
+      enum { LINE_STRIP = 1 };
+      enum { LINE_LIST = 2 };
+      enum { POLYGON = 3 };
+      enum { POINTS = 4 };
+      enum { ADD = 0 };
+      enum { REMOVE = 1 };
+
+    ImageMarker():
+      header(),
+      ns(""),
+      id(0),
+      type(0),
+      action(0),
+      position(),
+      scale(0),
+      outline_color(),
+      filled(0),
+      fill_color(),
+      lifetime(),
+      points_length(0), points(NULL),
+      outline_colors_length(0), outline_colors(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      uint32_t length_ns = strlen(this->ns);
+      varToArr(outbuffer + offset, length_ns);
+      offset += 4;
+      memcpy(outbuffer + offset, this->ns, length_ns);
+      offset += length_ns;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_id;
+      u_id.real = this->id;
+      *(outbuffer + offset + 0) = (u_id.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_id.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_id.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_id.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->id);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_type;
+      u_type.real = this->type;
+      *(outbuffer + offset + 0) = (u_type.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_type.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_type.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_type.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->type);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_action;
+      u_action.real = this->action;
+      *(outbuffer + offset + 0) = (u_action.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_action.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_action.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_action.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->action);
+      offset += this->position.serialize(outbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_scale;
+      u_scale.real = this->scale;
+      *(outbuffer + offset + 0) = (u_scale.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_scale.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_scale.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_scale.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->scale);
+      offset += this->outline_color.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->filled >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->filled);
+      offset += this->fill_color.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->lifetime.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->lifetime.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->lifetime.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->lifetime.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->lifetime.sec);
+      *(outbuffer + offset + 0) = (this->lifetime.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->lifetime.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->lifetime.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->lifetime.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->lifetime.nsec);
+      *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->points_length);
+      for( uint32_t i = 0; i < points_length; i++){
+      offset += this->points[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->outline_colors_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->outline_colors_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->outline_colors_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->outline_colors_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->outline_colors_length);
+      for( uint32_t i = 0; i < outline_colors_length; i++){
+      offset += this->outline_colors[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t length_ns;
+      arrToVar(length_ns, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_ns; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_ns-1]=0;
+      this->ns = (char *)(inbuffer + offset-1);
+      offset += length_ns;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_id;
+      u_id.base = 0;
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->id = u_id.real;
+      offset += sizeof(this->id);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_type;
+      u_type.base = 0;
+      u_type.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_type.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_type.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_type.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->type = u_type.real;
+      offset += sizeof(this->type);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_action;
+      u_action.base = 0;
+      u_action.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_action.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_action.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_action.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->action = u_action.real;
+      offset += sizeof(this->action);
+      offset += this->position.deserialize(inbuffer + offset);
+      union {
+        float real;
+        uint32_t base;
+      } u_scale;
+      u_scale.base = 0;
+      u_scale.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_scale.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_scale.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_scale.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->scale = u_scale.real;
+      offset += sizeof(this->scale);
+      offset += this->outline_color.deserialize(inbuffer + offset);
+      this->filled =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->filled);
+      offset += this->fill_color.deserialize(inbuffer + offset);
+      this->lifetime.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->lifetime.sec);
+      this->lifetime.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->lifetime.nsec);
+      uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->points_length);
+      if(points_lengthT > points_length)
+        this->points = (geometry_msgs::Point*)realloc(this->points, points_lengthT * sizeof(geometry_msgs::Point));
+      points_length = points_lengthT;
+      for( uint32_t i = 0; i < points_length; i++){
+      offset += this->st_points.deserialize(inbuffer + offset);
+        memcpy( &(this->points[i]), &(this->st_points), sizeof(geometry_msgs::Point));
+      }
+      uint32_t outline_colors_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      outline_colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      outline_colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      outline_colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->outline_colors_length);
+      if(outline_colors_lengthT > outline_colors_length)
+        this->outline_colors = (std_msgs::ColorRGBA*)realloc(this->outline_colors, outline_colors_lengthT * sizeof(std_msgs::ColorRGBA));
+      outline_colors_length = outline_colors_lengthT;
+      for( uint32_t i = 0; i < outline_colors_length; i++){
+      offset += this->st_outline_colors.deserialize(inbuffer + offset);
+        memcpy( &(this->outline_colors[i]), &(this->st_outline_colors), sizeof(std_msgs::ColorRGBA));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "visualization_msgs/ImageMarker"; };
+    const char * getMD5(){ return "1de93c67ec8858b831025a08fbf1b35c"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/visualization_msgs/InteractiveMarker.h b/otto_controller_source/Inc/visualization_msgs/InteractiveMarker.h
new file mode 100644 (file)
index 0000000..60adeb7
--- /dev/null
@@ -0,0 +1,160 @@
+#ifndef _ROS_visualization_msgs_InteractiveMarker_h
+#define _ROS_visualization_msgs_InteractiveMarker_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Pose.h"
+#include "visualization_msgs/MenuEntry.h"
+#include "visualization_msgs/InteractiveMarkerControl.h"
+
+namespace visualization_msgs
+{
+
+  class InteractiveMarker : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Pose _pose_type;
+      _pose_type pose;
+      typedef const char* _name_type;
+      _name_type name;
+      typedef const char* _description_type;
+      _description_type description;
+      typedef float _scale_type;
+      _scale_type scale;
+      uint32_t menu_entries_length;
+      typedef visualization_msgs::MenuEntry _menu_entries_type;
+      _menu_entries_type st_menu_entries;
+      _menu_entries_type * menu_entries;
+      uint32_t controls_length;
+      typedef visualization_msgs::InteractiveMarkerControl _controls_type;
+      _controls_type st_controls;
+      _controls_type * controls;
+
+    InteractiveMarker():
+      header(),
+      pose(),
+      name(""),
+      description(""),
+      scale(0),
+      menu_entries_length(0), menu_entries(NULL),
+      controls_length(0), controls(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->pose.serialize(outbuffer + offset);
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      uint32_t length_description = strlen(this->description);
+      varToArr(outbuffer + offset, length_description);
+      offset += 4;
+      memcpy(outbuffer + offset, this->description, length_description);
+      offset += length_description;
+      union {
+        float real;
+        uint32_t base;
+      } u_scale;
+      u_scale.real = this->scale;
+      *(outbuffer + offset + 0) = (u_scale.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_scale.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_scale.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_scale.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->scale);
+      *(outbuffer + offset + 0) = (this->menu_entries_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->menu_entries_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->menu_entries_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->menu_entries_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->menu_entries_length);
+      for( uint32_t i = 0; i < menu_entries_length; i++){
+      offset += this->menu_entries[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->controls_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->controls_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->controls_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->controls_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->controls_length);
+      for( uint32_t i = 0; i < controls_length; i++){
+      offset += this->controls[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->pose.deserialize(inbuffer + offset);
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      uint32_t length_description;
+      arrToVar(length_description, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_description; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_description-1]=0;
+      this->description = (char *)(inbuffer + offset-1);
+      offset += length_description;
+      union {
+        float real;
+        uint32_t base;
+      } u_scale;
+      u_scale.base = 0;
+      u_scale.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_scale.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_scale.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_scale.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->scale = u_scale.real;
+      offset += sizeof(this->scale);
+      uint32_t menu_entries_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      menu_entries_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      menu_entries_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      menu_entries_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->menu_entries_length);
+      if(menu_entries_lengthT > menu_entries_length)
+        this->menu_entries = (visualization_msgs::MenuEntry*)realloc(this->menu_entries, menu_entries_lengthT * sizeof(visualization_msgs::MenuEntry));
+      menu_entries_length = menu_entries_lengthT;
+      for( uint32_t i = 0; i < menu_entries_length; i++){
+      offset += this->st_menu_entries.deserialize(inbuffer + offset);
+        memcpy( &(this->menu_entries[i]), &(this->st_menu_entries), sizeof(visualization_msgs::MenuEntry));
+      }
+      uint32_t controls_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      controls_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      controls_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      controls_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->controls_length);
+      if(controls_lengthT > controls_length)
+        this->controls = (visualization_msgs::InteractiveMarkerControl*)realloc(this->controls, controls_lengthT * sizeof(visualization_msgs::InteractiveMarkerControl));
+      controls_length = controls_lengthT;
+      for( uint32_t i = 0; i < controls_length; i++){
+      offset += this->st_controls.deserialize(inbuffer + offset);
+        memcpy( &(this->controls[i]), &(this->st_controls), sizeof(visualization_msgs::InteractiveMarkerControl));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "visualization_msgs/InteractiveMarker"; };
+    const char * getMD5(){ return "dd86d22909d5a3364b384492e35c10af"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/visualization_msgs/InteractiveMarkerControl.h b/otto_controller_source/Inc/visualization_msgs/InteractiveMarkerControl.h
new file mode 100644 (file)
index 0000000..5195f43
--- /dev/null
@@ -0,0 +1,167 @@
+#ifndef _ROS_visualization_msgs_InteractiveMarkerControl_h
+#define _ROS_visualization_msgs_InteractiveMarkerControl_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "geometry_msgs/Quaternion.h"
+#include "visualization_msgs/Marker.h"
+
+namespace visualization_msgs
+{
+
+  class InteractiveMarkerControl : public ros::Msg
+  {
+    public:
+      typedef const char* _name_type;
+      _name_type name;
+      typedef geometry_msgs::Quaternion _orientation_type;
+      _orientation_type orientation;
+      typedef uint8_t _orientation_mode_type;
+      _orientation_mode_type orientation_mode;
+      typedef uint8_t _interaction_mode_type;
+      _interaction_mode_type interaction_mode;
+      typedef bool _always_visible_type;
+      _always_visible_type always_visible;
+      uint32_t markers_length;
+      typedef visualization_msgs::Marker _markers_type;
+      _markers_type st_markers;
+      _markers_type * markers;
+      typedef bool _independent_marker_orientation_type;
+      _independent_marker_orientation_type independent_marker_orientation;
+      typedef const char* _description_type;
+      _description_type description;
+      enum { INHERIT =  0 };
+      enum { FIXED =  1 };
+      enum { VIEW_FACING =  2 };
+      enum { NONE =  0 };
+      enum { MENU =  1 };
+      enum { BUTTON =  2 };
+      enum { MOVE_AXIS =  3 };
+      enum { MOVE_PLANE =  4 };
+      enum { ROTATE_AXIS =  5 };
+      enum { MOVE_ROTATE =  6 };
+      enum { MOVE_3D =  7 };
+      enum { ROTATE_3D =  8 };
+      enum { MOVE_ROTATE_3D =  9 };
+
+    InteractiveMarkerControl():
+      name(""),
+      orientation(),
+      orientation_mode(0),
+      interaction_mode(0),
+      always_visible(0),
+      markers_length(0), markers(NULL),
+      independent_marker_orientation(0),
+      description("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      offset += this->orientation.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->orientation_mode >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->orientation_mode);
+      *(outbuffer + offset + 0) = (this->interaction_mode >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->interaction_mode);
+      union {
+        bool real;
+        uint8_t base;
+      } u_always_visible;
+      u_always_visible.real = this->always_visible;
+      *(outbuffer + offset + 0) = (u_always_visible.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->always_visible);
+      *(outbuffer + offset + 0) = (this->markers_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->markers_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->markers_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->markers_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->markers_length);
+      for( uint32_t i = 0; i < markers_length; i++){
+      offset += this->markers[i].serialize(outbuffer + offset);
+      }
+      union {
+        bool real;
+        uint8_t base;
+      } u_independent_marker_orientation;
+      u_independent_marker_orientation.real = this->independent_marker_orientation;
+      *(outbuffer + offset + 0) = (u_independent_marker_orientation.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->independent_marker_orientation);
+      uint32_t length_description = strlen(this->description);
+      varToArr(outbuffer + offset, length_description);
+      offset += 4;
+      memcpy(outbuffer + offset, this->description, length_description);
+      offset += length_description;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+      offset += this->orientation.deserialize(inbuffer + offset);
+      this->orientation_mode =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->orientation_mode);
+      this->interaction_mode =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->interaction_mode);
+      union {
+        bool real;
+        uint8_t base;
+      } u_always_visible;
+      u_always_visible.base = 0;
+      u_always_visible.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->always_visible = u_always_visible.real;
+      offset += sizeof(this->always_visible);
+      uint32_t markers_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->markers_length);
+      if(markers_lengthT > markers_length)
+        this->markers = (visualization_msgs::Marker*)realloc(this->markers, markers_lengthT * sizeof(visualization_msgs::Marker));
+      markers_length = markers_lengthT;
+      for( uint32_t i = 0; i < markers_length; i++){
+      offset += this->st_markers.deserialize(inbuffer + offset);
+        memcpy( &(this->markers[i]), &(this->st_markers), sizeof(visualization_msgs::Marker));
+      }
+      union {
+        bool real;
+        uint8_t base;
+      } u_independent_marker_orientation;
+      u_independent_marker_orientation.base = 0;
+      u_independent_marker_orientation.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->independent_marker_orientation = u_independent_marker_orientation.real;
+      offset += sizeof(this->independent_marker_orientation);
+      uint32_t length_description;
+      arrToVar(length_description, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_description; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_description-1]=0;
+      this->description = (char *)(inbuffer + offset-1);
+      offset += length_description;
+     return offset;
+    }
+
+    const char * getType(){ return "visualization_msgs/InteractiveMarkerControl"; };
+    const char * getMD5(){ return "b3c81e785788195d1840b86c28da1aac"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/visualization_msgs/InteractiveMarkerFeedback.h b/otto_controller_source/Inc/visualization_msgs/InteractiveMarkerFeedback.h
new file mode 100644 (file)
index 0000000..e732126
--- /dev/null
@@ -0,0 +1,151 @@
+#ifndef _ROS_visualization_msgs_InteractiveMarkerFeedback_h
+#define _ROS_visualization_msgs_InteractiveMarkerFeedback_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Pose.h"
+#include "geometry_msgs/Point.h"
+
+namespace visualization_msgs
+{
+
+  class InteractiveMarkerFeedback : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef const char* _client_id_type;
+      _client_id_type client_id;
+      typedef const char* _marker_name_type;
+      _marker_name_type marker_name;
+      typedef const char* _control_name_type;
+      _control_name_type control_name;
+      typedef uint8_t _event_type_type;
+      _event_type_type event_type;
+      typedef geometry_msgs::Pose _pose_type;
+      _pose_type pose;
+      typedef uint32_t _menu_entry_id_type;
+      _menu_entry_id_type menu_entry_id;
+      typedef geometry_msgs::Point _mouse_point_type;
+      _mouse_point_type mouse_point;
+      typedef bool _mouse_point_valid_type;
+      _mouse_point_valid_type mouse_point_valid;
+      enum { KEEP_ALIVE =  0 };
+      enum { POSE_UPDATE =  1 };
+      enum { MENU_SELECT =  2 };
+      enum { BUTTON_CLICK =  3 };
+      enum { MOUSE_DOWN =  4 };
+      enum { MOUSE_UP =  5 };
+
+    InteractiveMarkerFeedback():
+      header(),
+      client_id(""),
+      marker_name(""),
+      control_name(""),
+      event_type(0),
+      pose(),
+      menu_entry_id(0),
+      mouse_point(),
+      mouse_point_valid(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      uint32_t length_client_id = strlen(this->client_id);
+      varToArr(outbuffer + offset, length_client_id);
+      offset += 4;
+      memcpy(outbuffer + offset, this->client_id, length_client_id);
+      offset += length_client_id;
+      uint32_t length_marker_name = strlen(this->marker_name);
+      varToArr(outbuffer + offset, length_marker_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->marker_name, length_marker_name);
+      offset += length_marker_name;
+      uint32_t length_control_name = strlen(this->control_name);
+      varToArr(outbuffer + offset, length_control_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->control_name, length_control_name);
+      offset += length_control_name;
+      *(outbuffer + offset + 0) = (this->event_type >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->event_type);
+      offset += this->pose.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->menu_entry_id >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->menu_entry_id >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->menu_entry_id >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->menu_entry_id >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->menu_entry_id);
+      offset += this->mouse_point.serialize(outbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_mouse_point_valid;
+      u_mouse_point_valid.real = this->mouse_point_valid;
+      *(outbuffer + offset + 0) = (u_mouse_point_valid.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->mouse_point_valid);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t length_client_id;
+      arrToVar(length_client_id, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_client_id; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_client_id-1]=0;
+      this->client_id = (char *)(inbuffer + offset-1);
+      offset += length_client_id;
+      uint32_t length_marker_name;
+      arrToVar(length_marker_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_marker_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_marker_name-1]=0;
+      this->marker_name = (char *)(inbuffer + offset-1);
+      offset += length_marker_name;
+      uint32_t length_control_name;
+      arrToVar(length_control_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_control_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_control_name-1]=0;
+      this->control_name = (char *)(inbuffer + offset-1);
+      offset += length_control_name;
+      this->event_type =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->event_type);
+      offset += this->pose.deserialize(inbuffer + offset);
+      this->menu_entry_id =  ((uint32_t) (*(inbuffer + offset)));
+      this->menu_entry_id |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->menu_entry_id |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->menu_entry_id |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->menu_entry_id);
+      offset += this->mouse_point.deserialize(inbuffer + offset);
+      union {
+        bool real;
+        uint8_t base;
+      } u_mouse_point_valid;
+      u_mouse_point_valid.base = 0;
+      u_mouse_point_valid.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->mouse_point_valid = u_mouse_point_valid.real;
+      offset += sizeof(this->mouse_point_valid);
+     return offset;
+    }
+
+    const char * getType(){ return "visualization_msgs/InteractiveMarkerFeedback"; };
+    const char * getMD5(){ return "ab0f1eee058667e28c19ff3ffc3f4b78"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/visualization_msgs/InteractiveMarkerInit.h b/otto_controller_source/Inc/visualization_msgs/InteractiveMarkerInit.h
new file mode 100644 (file)
index 0000000..065a3d2
--- /dev/null
@@ -0,0 +1,102 @@
+#ifndef _ROS_visualization_msgs_InteractiveMarkerInit_h
+#define _ROS_visualization_msgs_InteractiveMarkerInit_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "visualization_msgs/InteractiveMarker.h"
+
+namespace visualization_msgs
+{
+
+  class InteractiveMarkerInit : public ros::Msg
+  {
+    public:
+      typedef const char* _server_id_type;
+      _server_id_type server_id;
+      typedef uint64_t _seq_num_type;
+      _seq_num_type seq_num;
+      uint32_t markers_length;
+      typedef visualization_msgs::InteractiveMarker _markers_type;
+      _markers_type st_markers;
+      _markers_type * markers;
+
+    InteractiveMarkerInit():
+      server_id(""),
+      seq_num(0),
+      markers_length(0), markers(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_server_id = strlen(this->server_id);
+      varToArr(outbuffer + offset, length_server_id);
+      offset += 4;
+      memcpy(outbuffer + offset, this->server_id, length_server_id);
+      offset += length_server_id;
+      *(outbuffer + offset + 0) = (this->seq_num >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->seq_num >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->seq_num >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->seq_num >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (this->seq_num >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (this->seq_num >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (this->seq_num >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (this->seq_num >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->seq_num);
+      *(outbuffer + offset + 0) = (this->markers_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->markers_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->markers_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->markers_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->markers_length);
+      for( uint32_t i = 0; i < markers_length; i++){
+      offset += this->markers[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_server_id;
+      arrToVar(length_server_id, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_server_id; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_server_id-1]=0;
+      this->server_id = (char *)(inbuffer + offset-1);
+      offset += length_server_id;
+      this->seq_num =  ((uint64_t) (*(inbuffer + offset)));
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      offset += sizeof(this->seq_num);
+      uint32_t markers_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->markers_length);
+      if(markers_lengthT > markers_length)
+        this->markers = (visualization_msgs::InteractiveMarker*)realloc(this->markers, markers_lengthT * sizeof(visualization_msgs::InteractiveMarker));
+      markers_length = markers_lengthT;
+      for( uint32_t i = 0; i < markers_length; i++){
+      offset += this->st_markers.deserialize(inbuffer + offset);
+        memcpy( &(this->markers[i]), &(this->st_markers), sizeof(visualization_msgs::InteractiveMarker));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "visualization_msgs/InteractiveMarkerInit"; };
+    const char * getMD5(){ return "d5f2c5045a72456d228676ab91048734"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/visualization_msgs/InteractiveMarkerPose.h b/otto_controller_source/Inc/visualization_msgs/InteractiveMarkerPose.h
new file mode 100644 (file)
index 0000000..1997e87
--- /dev/null
@@ -0,0 +1,67 @@
+#ifndef _ROS_visualization_msgs_InteractiveMarkerPose_h
+#define _ROS_visualization_msgs_InteractiveMarkerPose_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Pose.h"
+
+namespace visualization_msgs
+{
+
+  class InteractiveMarkerPose : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef geometry_msgs::Pose _pose_type;
+      _pose_type pose;
+      typedef const char* _name_type;
+      _name_type name;
+
+    InteractiveMarkerPose():
+      header(),
+      pose(),
+      name("")
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      offset += this->pose.serialize(outbuffer + offset);
+      uint32_t length_name = strlen(this->name);
+      varToArr(outbuffer + offset, length_name);
+      offset += 4;
+      memcpy(outbuffer + offset, this->name, length_name);
+      offset += length_name;
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      offset += this->pose.deserialize(inbuffer + offset);
+      uint32_t length_name;
+      arrToVar(length_name, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_name; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_name-1]=0;
+      this->name = (char *)(inbuffer + offset-1);
+      offset += length_name;
+     return offset;
+    }
+
+    const char * getType(){ return "visualization_msgs/InteractiveMarkerPose"; };
+    const char * getMD5(){ return "a6e6833209a196a38d798dadb02c81f8"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/visualization_msgs/InteractiveMarkerUpdate.h b/otto_controller_source/Inc/visualization_msgs/InteractiveMarkerUpdate.h
new file mode 100644 (file)
index 0000000..951bb55
--- /dev/null
@@ -0,0 +1,174 @@
+#ifndef _ROS_visualization_msgs_InteractiveMarkerUpdate_h
+#define _ROS_visualization_msgs_InteractiveMarkerUpdate_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "visualization_msgs/InteractiveMarker.h"
+#include "visualization_msgs/InteractiveMarkerPose.h"
+
+namespace visualization_msgs
+{
+
+  class InteractiveMarkerUpdate : public ros::Msg
+  {
+    public:
+      typedef const char* _server_id_type;
+      _server_id_type server_id;
+      typedef uint64_t _seq_num_type;
+      _seq_num_type seq_num;
+      typedef uint8_t _type_type;
+      _type_type type;
+      uint32_t markers_length;
+      typedef visualization_msgs::InteractiveMarker _markers_type;
+      _markers_type st_markers;
+      _markers_type * markers;
+      uint32_t poses_length;
+      typedef visualization_msgs::InteractiveMarkerPose _poses_type;
+      _poses_type st_poses;
+      _poses_type * poses;
+      uint32_t erases_length;
+      typedef char* _erases_type;
+      _erases_type st_erases;
+      _erases_type * erases;
+      enum { KEEP_ALIVE =  0 };
+      enum { UPDATE =  1 };
+
+    InteractiveMarkerUpdate():
+      server_id(""),
+      seq_num(0),
+      type(0),
+      markers_length(0), markers(NULL),
+      poses_length(0), poses(NULL),
+      erases_length(0), erases(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      uint32_t length_server_id = strlen(this->server_id);
+      varToArr(outbuffer + offset, length_server_id);
+      offset += 4;
+      memcpy(outbuffer + offset, this->server_id, length_server_id);
+      offset += length_server_id;
+      *(outbuffer + offset + 0) = (this->seq_num >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->seq_num >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->seq_num >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->seq_num >> (8 * 3)) & 0xFF;
+      *(outbuffer + offset + 4) = (this->seq_num >> (8 * 4)) & 0xFF;
+      *(outbuffer + offset + 5) = (this->seq_num >> (8 * 5)) & 0xFF;
+      *(outbuffer + offset + 6) = (this->seq_num >> (8 * 6)) & 0xFF;
+      *(outbuffer + offset + 7) = (this->seq_num >> (8 * 7)) & 0xFF;
+      offset += sizeof(this->seq_num);
+      *(outbuffer + offset + 0) = (this->type >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->type);
+      *(outbuffer + offset + 0) = (this->markers_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->markers_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->markers_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->markers_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->markers_length);
+      for( uint32_t i = 0; i < markers_length; i++){
+      offset += this->markers[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->poses_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->poses_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->poses_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->poses_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->poses_length);
+      for( uint32_t i = 0; i < poses_length; i++){
+      offset += this->poses[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->erases_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->erases_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->erases_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->erases_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->erases_length);
+      for( uint32_t i = 0; i < erases_length; i++){
+      uint32_t length_erasesi = strlen(this->erases[i]);
+      varToArr(outbuffer + offset, length_erasesi);
+      offset += 4;
+      memcpy(outbuffer + offset, this->erases[i], length_erasesi);
+      offset += length_erasesi;
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t length_server_id;
+      arrToVar(length_server_id, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_server_id; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_server_id-1]=0;
+      this->server_id = (char *)(inbuffer + offset-1);
+      offset += length_server_id;
+      this->seq_num =  ((uint64_t) (*(inbuffer + offset)));
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 4))) << (8 * 4);
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 5))) << (8 * 5);
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 6))) << (8 * 6);
+      this->seq_num |= ((uint64_t) (*(inbuffer + offset + 7))) << (8 * 7);
+      offset += sizeof(this->seq_num);
+      this->type =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->type);
+      uint32_t markers_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->markers_length);
+      if(markers_lengthT > markers_length)
+        this->markers = (visualization_msgs::InteractiveMarker*)realloc(this->markers, markers_lengthT * sizeof(visualization_msgs::InteractiveMarker));
+      markers_length = markers_lengthT;
+      for( uint32_t i = 0; i < markers_length; i++){
+      offset += this->st_markers.deserialize(inbuffer + offset);
+        memcpy( &(this->markers[i]), &(this->st_markers), sizeof(visualization_msgs::InteractiveMarker));
+      }
+      uint32_t poses_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      poses_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->poses_length);
+      if(poses_lengthT > poses_length)
+        this->poses = (visualization_msgs::InteractiveMarkerPose*)realloc(this->poses, poses_lengthT * sizeof(visualization_msgs::InteractiveMarkerPose));
+      poses_length = poses_lengthT;
+      for( uint32_t i = 0; i < poses_length; i++){
+      offset += this->st_poses.deserialize(inbuffer + offset);
+        memcpy( &(this->poses[i]), &(this->st_poses), sizeof(visualization_msgs::InteractiveMarkerPose));
+      }
+      uint32_t erases_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      erases_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      erases_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      erases_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->erases_length);
+      if(erases_lengthT > erases_length)
+        this->erases = (char**)realloc(this->erases, erases_lengthT * sizeof(char*));
+      erases_length = erases_lengthT;
+      for( uint32_t i = 0; i < erases_length; i++){
+      uint32_t length_st_erases;
+      arrToVar(length_st_erases, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_st_erases; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_st_erases-1]=0;
+      this->st_erases = (char *)(inbuffer + offset-1);
+      offset += length_st_erases;
+        memcpy( &(this->erases[i]), &(this->st_erases), sizeof(char*));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "visualization_msgs/InteractiveMarkerUpdate"; };
+    const char * getMD5(){ return "710d308d0a9276d65945e92dd30b3946"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/visualization_msgs/Marker.h b/otto_controller_source/Inc/visualization_msgs/Marker.h
new file mode 100644 (file)
index 0000000..d1f4eb4
--- /dev/null
@@ -0,0 +1,312 @@
+#ifndef _ROS_visualization_msgs_Marker_h
+#define _ROS_visualization_msgs_Marker_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "std_msgs/Header.h"
+#include "geometry_msgs/Pose.h"
+#include "geometry_msgs/Vector3.h"
+#include "std_msgs/ColorRGBA.h"
+#include "ros/duration.h"
+#include "geometry_msgs/Point.h"
+
+namespace visualization_msgs
+{
+
+  class Marker : public ros::Msg
+  {
+    public:
+      typedef std_msgs::Header _header_type;
+      _header_type header;
+      typedef const char* _ns_type;
+      _ns_type ns;
+      typedef int32_t _id_type;
+      _id_type id;
+      typedef int32_t _type_type;
+      _type_type type;
+      typedef int32_t _action_type;
+      _action_type action;
+      typedef geometry_msgs::Pose _pose_type;
+      _pose_type pose;
+      typedef geometry_msgs::Vector3 _scale_type;
+      _scale_type scale;
+      typedef std_msgs::ColorRGBA _color_type;
+      _color_type color;
+      typedef ros::Duration _lifetime_type;
+      _lifetime_type lifetime;
+      typedef bool _frame_locked_type;
+      _frame_locked_type frame_locked;
+      uint32_t points_length;
+      typedef geometry_msgs::Point _points_type;
+      _points_type st_points;
+      _points_type * points;
+      uint32_t colors_length;
+      typedef std_msgs::ColorRGBA _colors_type;
+      _colors_type st_colors;
+      _colors_type * colors;
+      typedef const char* _text_type;
+      _text_type text;
+      typedef const char* _mesh_resource_type;
+      _mesh_resource_type mesh_resource;
+      typedef bool _mesh_use_embedded_materials_type;
+      _mesh_use_embedded_materials_type mesh_use_embedded_materials;
+      enum { ARROW = 0 };
+      enum { CUBE = 1 };
+      enum { SPHERE = 2 };
+      enum { CYLINDER = 3 };
+      enum { LINE_STRIP = 4 };
+      enum { LINE_LIST = 5 };
+      enum { CUBE_LIST = 6 };
+      enum { SPHERE_LIST = 7 };
+      enum { POINTS = 8 };
+      enum { TEXT_VIEW_FACING = 9 };
+      enum { MESH_RESOURCE = 10 };
+      enum { TRIANGLE_LIST = 11 };
+      enum { ADD = 0 };
+      enum { MODIFY = 0 };
+      enum { DELETE = 2 };
+      enum { DELETEALL = 3 };
+
+    Marker():
+      header(),
+      ns(""),
+      id(0),
+      type(0),
+      action(0),
+      pose(),
+      scale(),
+      color(),
+      lifetime(),
+      frame_locked(0),
+      points_length(0), points(NULL),
+      colors_length(0), colors(NULL),
+      text(""),
+      mesh_resource(""),
+      mesh_use_embedded_materials(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      offset += this->header.serialize(outbuffer + offset);
+      uint32_t length_ns = strlen(this->ns);
+      varToArr(outbuffer + offset, length_ns);
+      offset += 4;
+      memcpy(outbuffer + offset, this->ns, length_ns);
+      offset += length_ns;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_id;
+      u_id.real = this->id;
+      *(outbuffer + offset + 0) = (u_id.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_id.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_id.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_id.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->id);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_type;
+      u_type.real = this->type;
+      *(outbuffer + offset + 0) = (u_type.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_type.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_type.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_type.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->type);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_action;
+      u_action.real = this->action;
+      *(outbuffer + offset + 0) = (u_action.base >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (u_action.base >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (u_action.base >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (u_action.base >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->action);
+      offset += this->pose.serialize(outbuffer + offset);
+      offset += this->scale.serialize(outbuffer + offset);
+      offset += this->color.serialize(outbuffer + offset);
+      *(outbuffer + offset + 0) = (this->lifetime.sec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->lifetime.sec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->lifetime.sec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->lifetime.sec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->lifetime.sec);
+      *(outbuffer + offset + 0) = (this->lifetime.nsec >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->lifetime.nsec >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->lifetime.nsec >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->lifetime.nsec >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->lifetime.nsec);
+      union {
+        bool real;
+        uint8_t base;
+      } u_frame_locked;
+      u_frame_locked.real = this->frame_locked;
+      *(outbuffer + offset + 0) = (u_frame_locked.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->frame_locked);
+      *(outbuffer + offset + 0) = (this->points_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->points_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->points_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->points_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->points_length);
+      for( uint32_t i = 0; i < points_length; i++){
+      offset += this->points[i].serialize(outbuffer + offset);
+      }
+      *(outbuffer + offset + 0) = (this->colors_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->colors_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->colors_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->colors_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->colors_length);
+      for( uint32_t i = 0; i < colors_length; i++){
+      offset += this->colors[i].serialize(outbuffer + offset);
+      }
+      uint32_t length_text = strlen(this->text);
+      varToArr(outbuffer + offset, length_text);
+      offset += 4;
+      memcpy(outbuffer + offset, this->text, length_text);
+      offset += length_text;
+      uint32_t length_mesh_resource = strlen(this->mesh_resource);
+      varToArr(outbuffer + offset, length_mesh_resource);
+      offset += 4;
+      memcpy(outbuffer + offset, this->mesh_resource, length_mesh_resource);
+      offset += length_mesh_resource;
+      union {
+        bool real;
+        uint8_t base;
+      } u_mesh_use_embedded_materials;
+      u_mesh_use_embedded_materials.real = this->mesh_use_embedded_materials;
+      *(outbuffer + offset + 0) = (u_mesh_use_embedded_materials.base >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->mesh_use_embedded_materials);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      offset += this->header.deserialize(inbuffer + offset);
+      uint32_t length_ns;
+      arrToVar(length_ns, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_ns; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_ns-1]=0;
+      this->ns = (char *)(inbuffer + offset-1);
+      offset += length_ns;
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_id;
+      u_id.base = 0;
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_id.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->id = u_id.real;
+      offset += sizeof(this->id);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_type;
+      u_type.base = 0;
+      u_type.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_type.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_type.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_type.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->type = u_type.real;
+      offset += sizeof(this->type);
+      union {
+        int32_t real;
+        uint32_t base;
+      } u_action;
+      u_action.base = 0;
+      u_action.base |= ((uint32_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      u_action.base |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      u_action.base |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      u_action.base |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      this->action = u_action.real;
+      offset += sizeof(this->action);
+      offset += this->pose.deserialize(inbuffer + offset);
+      offset += this->scale.deserialize(inbuffer + offset);
+      offset += this->color.deserialize(inbuffer + offset);
+      this->lifetime.sec =  ((uint32_t) (*(inbuffer + offset)));
+      this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->lifetime.sec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->lifetime.sec);
+      this->lifetime.nsec =  ((uint32_t) (*(inbuffer + offset)));
+      this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->lifetime.nsec |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->lifetime.nsec);
+      union {
+        bool real;
+        uint8_t base;
+      } u_frame_locked;
+      u_frame_locked.base = 0;
+      u_frame_locked.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->frame_locked = u_frame_locked.real;
+      offset += sizeof(this->frame_locked);
+      uint32_t points_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      points_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->points_length);
+      if(points_lengthT > points_length)
+        this->points = (geometry_msgs::Point*)realloc(this->points, points_lengthT * sizeof(geometry_msgs::Point));
+      points_length = points_lengthT;
+      for( uint32_t i = 0; i < points_length; i++){
+      offset += this->st_points.deserialize(inbuffer + offset);
+        memcpy( &(this->points[i]), &(this->st_points), sizeof(geometry_msgs::Point));
+      }
+      uint32_t colors_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      colors_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->colors_length);
+      if(colors_lengthT > colors_length)
+        this->colors = (std_msgs::ColorRGBA*)realloc(this->colors, colors_lengthT * sizeof(std_msgs::ColorRGBA));
+      colors_length = colors_lengthT;
+      for( uint32_t i = 0; i < colors_length; i++){
+      offset += this->st_colors.deserialize(inbuffer + offset);
+        memcpy( &(this->colors[i]), &(this->st_colors), sizeof(std_msgs::ColorRGBA));
+      }
+      uint32_t length_text;
+      arrToVar(length_text, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_text; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_text-1]=0;
+      this->text = (char *)(inbuffer + offset-1);
+      offset += length_text;
+      uint32_t length_mesh_resource;
+      arrToVar(length_mesh_resource, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_mesh_resource; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_mesh_resource-1]=0;
+      this->mesh_resource = (char *)(inbuffer + offset-1);
+      offset += length_mesh_resource;
+      union {
+        bool real;
+        uint8_t base;
+      } u_mesh_use_embedded_materials;
+      u_mesh_use_embedded_materials.base = 0;
+      u_mesh_use_embedded_materials.base |= ((uint8_t) (*(inbuffer + offset + 0))) << (8 * 0);
+      this->mesh_use_embedded_materials = u_mesh_use_embedded_materials.real;
+      offset += sizeof(this->mesh_use_embedded_materials);
+     return offset;
+    }
+
+    const char * getType(){ return "visualization_msgs/Marker"; };
+    const char * getMD5(){ return "4048c9de2a16f4ae8e0538085ebf1b97"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/visualization_msgs/MarkerArray.h b/otto_controller_source/Inc/visualization_msgs/MarkerArray.h
new file mode 100644 (file)
index 0000000..bc24a48
--- /dev/null
@@ -0,0 +1,64 @@
+#ifndef _ROS_visualization_msgs_MarkerArray_h
+#define _ROS_visualization_msgs_MarkerArray_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+#include "visualization_msgs/Marker.h"
+
+namespace visualization_msgs
+{
+
+  class MarkerArray : public ros::Msg
+  {
+    public:
+      uint32_t markers_length;
+      typedef visualization_msgs::Marker _markers_type;
+      _markers_type st_markers;
+      _markers_type * markers;
+
+    MarkerArray():
+      markers_length(0), markers(NULL)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->markers_length >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->markers_length >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->markers_length >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->markers_length >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->markers_length);
+      for( uint32_t i = 0; i < markers_length; i++){
+      offset += this->markers[i].serialize(outbuffer + offset);
+      }
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      uint32_t markers_lengthT = ((uint32_t) (*(inbuffer + offset))); 
+      markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1); 
+      markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2); 
+      markers_lengthT |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3); 
+      offset += sizeof(this->markers_length);
+      if(markers_lengthT > markers_length)
+        this->markers = (visualization_msgs::Marker*)realloc(this->markers, markers_lengthT * sizeof(visualization_msgs::Marker));
+      markers_length = markers_lengthT;
+      for( uint32_t i = 0; i < markers_length; i++){
+      offset += this->st_markers.deserialize(inbuffer + offset);
+        memcpy( &(this->markers[i]), &(this->st_markers), sizeof(visualization_msgs::Marker));
+      }
+     return offset;
+    }
+
+    const char * getType(){ return "visualization_msgs/MarkerArray"; };
+    const char * getMD5(){ return "d155b9ce5188fbaf89745847fd5882d7"; };
+
+  };
+
+}
+#endif
diff --git a/otto_controller_source/Inc/visualization_msgs/MenuEntry.h b/otto_controller_source/Inc/visualization_msgs/MenuEntry.h
new file mode 100644 (file)
index 0000000..3b66245
--- /dev/null
@@ -0,0 +1,108 @@
+#ifndef _ROS_visualization_msgs_MenuEntry_h
+#define _ROS_visualization_msgs_MenuEntry_h
+
+#include <stdint.h>
+#include <string.h>
+#include <stdlib.h>
+#include "ros/msg.h"
+
+namespace visualization_msgs
+{
+
+  class MenuEntry : public ros::Msg
+  {
+    public:
+      typedef uint32_t _id_type;
+      _id_type id;
+      typedef uint32_t _parent_id_type;
+      _parent_id_type parent_id;
+      typedef const char* _title_type;
+      _title_type title;
+      typedef const char* _command_type;
+      _command_type command;
+      typedef uint8_t _command_type_type;
+      _command_type_type command_type;
+      enum { FEEDBACK = 0 };
+      enum { ROSRUN = 1 };
+      enum { ROSLAUNCH = 2 };
+
+    MenuEntry():
+      id(0),
+      parent_id(0),
+      title(""),
+      command(""),
+      command_type(0)
+    {
+    }
+
+    virtual int serialize(unsigned char *outbuffer) const
+    {
+      int offset = 0;
+      *(outbuffer + offset + 0) = (this->id >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->id >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->id >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->id >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->id);
+      *(outbuffer + offset + 0) = (this->parent_id >> (8 * 0)) & 0xFF;
+      *(outbuffer + offset + 1) = (this->parent_id >> (8 * 1)) & 0xFF;
+      *(outbuffer + offset + 2) = (this->parent_id >> (8 * 2)) & 0xFF;
+      *(outbuffer + offset + 3) = (this->parent_id >> (8 * 3)) & 0xFF;
+      offset += sizeof(this->parent_id);
+      uint32_t length_title = strlen(this->title);
+      varToArr(outbuffer + offset, length_title);
+      offset += 4;
+      memcpy(outbuffer + offset, this->title, length_title);
+      offset += length_title;
+      uint32_t length_command = strlen(this->command);
+      varToArr(outbuffer + offset, length_command);
+      offset += 4;
+      memcpy(outbuffer + offset, this->command, length_command);
+      offset += length_command;
+      *(outbuffer + offset + 0) = (this->command_type >> (8 * 0)) & 0xFF;
+      offset += sizeof(this->command_type);
+      return offset;
+    }
+
+    virtual int deserialize(unsigned char *inbuffer)
+    {
+      int offset = 0;
+      this->id =  ((uint32_t) (*(inbuffer + offset)));
+      this->id |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->id |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->id |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->id);
+      this->parent_id =  ((uint32_t) (*(inbuffer + offset)));
+      this->parent_id |= ((uint32_t) (*(inbuffer + offset + 1))) << (8 * 1);
+      this->parent_id |= ((uint32_t) (*(inbuffer + offset + 2))) << (8 * 2);
+      this->parent_id |= ((uint32_t) (*(inbuffer + offset + 3))) << (8 * 3);
+      offset += sizeof(this->parent_id);
+      uint32_t length_title;
+      arrToVar(length_title, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_title; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_title-1]=0;
+      this->title = (char *)(inbuffer + offset-1);
+      offset += length_title;
+      uint32_t length_command;
+      arrToVar(length_command, (inbuffer + offset));
+      offset += 4;
+      for(unsigned int k= offset; k< offset+length_command; ++k){
+          inbuffer[k-1]=inbuffer[k];
+      }
+      inbuffer[offset+length_command-1]=0;
+      this->command = (char *)(inbuffer + offset-1);
+      offset += length_command;
+      this->command_type =  ((uint8_t) (*(inbuffer + offset)));
+      offset += sizeof(this->command_type);
+     return offset;
+    }
+
+    const char * getType(){ return "visualization_msgs/MenuEntry"; };
+    const char * getMD5(){ return "b90ec63024573de83b57aa93eb39be2d"; };
+
+  };
+
+}
+#endif
index 744f0d622213e384b6cfd030a52ff40f0ee72741..a601ae18d168f13c3741d076215b0bdb3b9c96f2 100644 (file)
@@ -55,8 +55,8 @@ ENTRY(Reset_Handler)
 /* Highest address of the user mode stack */
 _estack = 0x20080000;  /* end of "RAM" Ram type memory */
 
-_Min_Heap_Size = 0x200 ;       /* required amount of heap  */
-_Min_Stack_Size = 0x400 ;      /* required amount of stack */
+_Min_Heap_Size = 0x200       /* required amount of heap  */
+_Min_Stack_Size = 0x400      /* required amount of stack */
 
 /* Memories definition */
 MEMORY
diff --git a/otto_controller_source/Src/duration.cpp b/otto_controller_source/Src/duration.cpp
new file mode 100644 (file)
index 0000000..d2dfdd6
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2011, Willow Garage, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <math.h>
+#include "ros/duration.h"
+
+namespace ros
+{
+void normalizeSecNSecSigned(int32_t &sec, int32_t &nsec)
+{
+  int32_t nsec_part = nsec;
+  int32_t sec_part = sec;
+
+  while (nsec_part > 1000000000L)
+  {
+    nsec_part -= 1000000000L;
+    ++sec_part;
+  }
+  while (nsec_part < 0)
+  {
+    nsec_part += 1000000000L;
+    --sec_part;
+  }
+  sec = sec_part;
+  nsec = nsec_part;
+}
+
+Duration& Duration::operator+=(const Duration &rhs)
+{
+  sec += rhs.sec;
+  nsec += rhs.nsec;
+  normalizeSecNSecSigned(sec, nsec);
+  return *this;
+}
+
+Duration& Duration::operator-=(const Duration &rhs)
+{
+  sec += -rhs.sec;
+  nsec += -rhs.nsec;
+  normalizeSecNSecSigned(sec, nsec);
+  return *this;
+}
+
+Duration& Duration::operator*=(double scale)
+{
+  sec *= scale;
+  nsec *= scale;
+  normalizeSecNSecSigned(sec, nsec);
+  return *this;
+}
+
+}
diff --git a/otto_controller_source/Src/encoder.cpp b/otto_controller_source/Src/encoder.cpp
new file mode 100644 (file)
index 0000000..57ae4e9
--- /dev/null
@@ -0,0 +1,13 @@
+#include "encoder.h"
+
+Encoder::Encoder(TIM_HandleTypeDef timer){
+  timer_ = timer;
+}
+
+Encoder::GetCount(){
+  return __HAL_TIM_GetCounter(timer_);
+}
+
+Encoder::ResetCount(){
+  __HAL_TIM_SetCounter(timer_, 0);
+}
index 35512fad19f993cae03f188c682db6c48e72aa6e..db249b30bc0bd072bff955788197cf4ef5e77dde 100644 (file)
@@ -43,6 +43,8 @@
 \r
 /* Private variables ---------------------------------------------------------*/\r
 \r
+TIM_HandleTypeDef htim2;\r
+\r
 UART_HandleTypeDef huart3;\r
 DMA_HandleTypeDef hdma_usart3_rx;\r
 DMA_HandleTypeDef hdma_usart3_tx;\r
@@ -52,14 +54,11 @@ DMA_HandleTypeDef hdma_usart3_tx;
 /* USER CODE END PV */\r
 \r
 /* Private function prototypes -----------------------------------------------*/\r
-void\r
-SystemClock_Config(void);\r
-static void\r
-MX_GPIO_Init(void);\r
-static void\r
-MX_DMA_Init(void);\r
-static void\r
-MX_USART3_UART_Init(void);\r
+void SystemClock_Config(void);\r
+static void MX_GPIO_Init(void);\r
+static void MX_DMA_Init(void);\r
+static void MX_TIM2_Init(void);\r
+static void MX_USART3_UART_Init(void);\r
 /* USER CODE BEGIN PFP */\r
 \r
 /* USER CODE END PFP */\r
@@ -70,13 +69,15 @@ MX_USART3_UART_Init(void);
 /* USER CODE END 0 */\r
 \r
 /**\r
- * @brief  The application entry point.\r
- * @retval int\r
- */\r
-int main(void) {\r
+  * @brief  The application entry point.\r
+  * @retval int\r
+  */\r
+int main(void)\r
+{\r
   /* USER CODE BEGIN 1 */\r
 \r
   /* USER CODE END 1 */\r
+  \r
 \r
   /* MCU Configuration--------------------------------------------------------*/\r
 \r
@@ -97,6 +98,7 @@ int main(void) {
   /* Initialize all configured peripherals */\r
   MX_GPIO_Init();\r
   MX_DMA_Init();\r
+  MX_TIM2_Init();\r
   MX_USART3_UART_Init();\r
   /* USER CODE BEGIN 2 */\r
 \r
@@ -113,53 +115,106 @@ int main(void) {
 }\r
 \r
 /**\r
- * @brief System Clock Configuration\r
- * @retval None\r
- */\r
-void SystemClock_Config(void) {\r
-  RCC_OscInitTypeDef RCC_OscInitStruct = { 0 };\r
-  RCC_ClkInitTypeDef RCC_ClkInitStruct = { 0 };\r
-  RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = { 0 };\r
+  * @brief System Clock Configuration\r
+  * @retval None\r
+  */\r
+void SystemClock_Config(void)\r
+{\r
+  RCC_OscInitTypeDef RCC_OscInitStruct = {0};\r
+  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};\r
+  RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};\r
 \r
   /** Configure the main internal regulator output voltage \r
-   */\r
-  __HAL_RCC_PWR_CLK_ENABLE()\r
-  ;\r
+  */\r
+  __HAL_RCC_PWR_CLK_ENABLE();\r
   __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);\r
   /** Initializes the CPU, AHB and APB busses clocks \r
-   */\r
+  */\r
   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;\r
   RCC_OscInitStruct.HSIState = RCC_HSI_ON;\r
   RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;\r
   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;\r
-  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {\r
+  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)\r
+  {\r
     Error_Handler();\r
   }\r
   /** Initializes the CPU, AHB and APB busses clocks \r
-   */\r
-  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK\r
-      | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;\r
+  */\r
+  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK\r
+                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;\r
   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;\r
   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;\r
   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;\r
   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;\r
 \r
-  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) {\r
+  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)\r
+  {\r
     Error_Handler();\r
   }\r
   PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART3;\r
   PeriphClkInitStruct.Usart3ClockSelection = RCC_USART3CLKSOURCE_PCLK1;\r
-  if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) {\r
+  if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)\r
+  {\r
     Error_Handler();\r
   }\r
 }\r
 \r
 /**\r
- * @brief USART3 Initialization Function\r
- * @param None\r
- * @retval None\r
- */\r
-static void MX_USART3_UART_Init(void) {\r
+  * @brief TIM2 Initialization Function\r
+  * @param None\r
+  * @retval None\r
+  */\r
+static void MX_TIM2_Init(void)\r
+{\r
+\r
+  /* USER CODE BEGIN TIM2_Init 0 */\r
+\r
+  /* USER CODE END TIM2_Init 0 */\r
+\r
+  TIM_Encoder_InitTypeDef sConfig = {0};\r
+  TIM_MasterConfigTypeDef sMasterConfig = {0};\r
+\r
+  /* USER CODE BEGIN TIM2_Init 1 */\r
+\r
+  /* USER CODE END TIM2_Init 1 */\r
+  htim2.Instance = TIM2;\r
+  htim2.Init.Prescaler = 0;\r
+  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;\r
+  htim2.Init.Period = 0;\r
+  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;\r
+  htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;\r
+  sConfig.EncoderMode = TIM_ENCODERMODE_TI1;\r
+  sConfig.IC1Polarity = TIM_ICPOLARITY_RISING;\r
+  sConfig.IC1Selection = TIM_ICSELECTION_DIRECTTI;\r
+  sConfig.IC1Prescaler = TIM_ICPSC_DIV1;\r
+  sConfig.IC1Filter = 0;\r
+  sConfig.IC2Polarity = TIM_ICPOLARITY_RISING;\r
+  sConfig.IC2Selection = TIM_ICSELECTION_DIRECTTI;\r
+  sConfig.IC2Prescaler = TIM_ICPSC_DIV1;\r
+  sConfig.IC2Filter = 0;\r
+  if (HAL_TIM_Encoder_Init(&htim2, &sConfig) != HAL_OK)\r
+  {\r
+    Error_Handler();\r
+  }\r
+  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;\r
+  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;\r
+  if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)\r
+  {\r
+    Error_Handler();\r
+  }\r
+  /* USER CODE BEGIN TIM2_Init 2 */\r
+\r
+  /* USER CODE END TIM2_Init 2 */\r
+\r
+}\r
+\r
+/**\r
+  * @brief USART3 Initialization Function\r
+  * @param None\r
+  * @retval None\r
+  */\r
+static void MX_USART3_UART_Init(void)\r
+{\r
 \r
   /* USER CODE BEGIN USART3_Init 0 */\r
 \r
@@ -178,7 +233,8 @@ static void MX_USART3_UART_Init(void) {
   huart3.Init.OverSampling = UART_OVERSAMPLING_16;\r
   huart3.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;\r
   huart3.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;\r
-  if (HAL_UART_Init(&huart3) != HAL_OK) {\r
+  if (HAL_UART_Init(&huart3) != HAL_OK)\r
+  {\r
     Error_Handler();\r
   }\r
   /* USER CODE BEGIN USART3_Init 2 */\r
@@ -188,13 +244,13 @@ static void MX_USART3_UART_Init(void) {
 }\r
 \r
 /** \r
- * Enable DMA controller clock\r
- */\r
-static void MX_DMA_Init(void) {\r
+  * Enable DMA controller clock\r
+  */\r
+static void MX_DMA_Init(void) \r
+{\r
 \r
   /* DMA controller clock enable */\r
-  __HAL_RCC_DMA1_CLK_ENABLE()\r
-  ;\r
+  __HAL_RCC_DMA1_CLK_ENABLE();\r
 \r
   /* DMA interrupt init */\r
   /* DMA1_Stream1_IRQn interrupt configuration */\r
@@ -207,15 +263,16 @@ static void MX_DMA_Init(void) {
 }\r
 \r
 /**\r
- * @brief GPIO Initialization Function\r
- * @param None\r
- * @retval None\r
- */\r
-static void MX_GPIO_Init(void) {\r
+  * @brief GPIO Initialization Function\r
+  * @param None\r
+  * @retval None\r
+  */\r
+static void MX_GPIO_Init(void)\r
+{\r
 \r
   /* GPIO Ports Clock Enable */\r
-  __HAL_RCC_GPIOD_CLK_ENABLE()\r
-  ;\r
+  __HAL_RCC_GPIOA_CLK_ENABLE();\r
+  __HAL_RCC_GPIOD_CLK_ENABLE();\r
 \r
 }\r
 \r
@@ -224,10 +281,11 @@ static void MX_GPIO_Init(void) {
 /* USER CODE END 4 */\r
 \r
 /**\r
- * @brief  This function is executed in case of error occurrence.\r
- * @retval None\r
- */\r
-void Error_Handler(void) {\r
+  * @brief  This function is executed in case of error occurrence.\r
+  * @retval None\r
+  */\r
+void Error_Handler(void)\r
+{\r
   /* USER CODE BEGIN Error_Handler_Debug */\r
   /* User can add his own implementation to report the HAL error return state */\r
 \r
index 390233302d6d7da929b0ee694867d08f0d914147..47501e8fc382947c28fdd5c37bc6bb7e80d9cb3e 100644 (file)
@@ -80,6 +80,71 @@ void HAL_MspInit(void)
   /* USER CODE END MspInit 1 */\r
 }\r
 \r
+/**\r
+* @brief TIM_Encoder MSP Initialization\r
+* This function configures the hardware resources used in this example\r
+* @param htim_encoder: TIM_Encoder handle pointer\r
+* @retval None\r
+*/\r
+void HAL_TIM_Encoder_MspInit(TIM_HandleTypeDef* htim_encoder)\r
+{\r
+  GPIO_InitTypeDef GPIO_InitStruct = {0};\r
+  if(htim_encoder->Instance==TIM2)\r
+  {\r
+  /* USER CODE BEGIN TIM2_MspInit 0 */\r
+\r
+  /* USER CODE END TIM2_MspInit 0 */\r
+    /* Peripheral clock enable */\r
+    __HAL_RCC_TIM2_CLK_ENABLE();\r
+  \r
+    __HAL_RCC_GPIOA_CLK_ENABLE();\r
+    /**TIM2 GPIO Configuration    \r
+    PA0/WKUP     ------> TIM2_CH1\r
+    PA1     ------> TIM2_CH2 \r
+    */\r
+    GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1;\r
+    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;\r
+    GPIO_InitStruct.Pull = GPIO_NOPULL;\r
+    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;\r
+    GPIO_InitStruct.Alternate = GPIO_AF1_TIM2;\r
+    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);\r
+\r
+  /* USER CODE BEGIN TIM2_MspInit 1 */\r
+\r
+  /* USER CODE END TIM2_MspInit 1 */\r
+  }\r
+\r
+}\r
+\r
+/**\r
+* @brief TIM_Encoder MSP De-Initialization\r
+* This function freeze the hardware resources used in this example\r
+* @param htim_encoder: TIM_Encoder handle pointer\r
+* @retval None\r
+*/\r
+void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef* htim_encoder)\r
+{\r
+  if(htim_encoder->Instance==TIM2)\r
+  {\r
+  /* USER CODE BEGIN TIM2_MspDeInit 0 */\r
+\r
+  /* USER CODE END TIM2_MspDeInit 0 */\r
+    /* Peripheral clock disable */\r
+    __HAL_RCC_TIM2_CLK_DISABLE();\r
+  \r
+    /**TIM2 GPIO Configuration    \r
+    PA0/WKUP     ------> TIM2_CH1\r
+    PA1     ------> TIM2_CH2 \r
+    */\r
+    HAL_GPIO_DeInit(GPIOA, GPIO_PIN_0|GPIO_PIN_1);\r
+\r
+  /* USER CODE BEGIN TIM2_MspDeInit 1 */\r
+\r
+  /* USER CODE END TIM2_MspDeInit 1 */\r
+  }\r
+\r
+}\r
+\r
 /**\r
 * @brief UART MSP Initialization\r
 * This function configures the hardware resources used in this example\r
diff --git a/otto_controller_source/Src/time.cpp b/otto_controller_source/Src/time.cpp
new file mode 100644 (file)
index 0000000..86221f9
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Software License Agreement (BSD License)
+ *
+ * Copyright (c) 2011, Willow Garage, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above
+ *    copyright notice, this list of conditions and the following
+ *    disclaimer in the documentation and/or other materials provided
+ *    with the distribution.
+ *  * Neither the name of Willow Garage, Inc. nor the names of its
+ *    contributors may be used to endorse or promote prducts derived
+ *    from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "ros/time.h"
+
+namespace ros
+{
+void normalizeSecNSec(uint32_t& sec, uint32_t& nsec)
+{
+  uint32_t nsec_part = nsec % 1000000000UL;
+  uint32_t sec_part = nsec / 1000000000UL;
+  sec += sec_part;
+  nsec = nsec_part;
+}
+
+Time& Time::fromNSec(int32_t t)
+{
+  sec = t / 1000000000;
+  nsec = t % 1000000000;
+  normalizeSecNSec(sec, nsec);
+  return *this;
+}
+
+Time& Time::operator +=(const Duration &rhs)
+{
+  sec += rhs.sec;
+  nsec += rhs.nsec;
+  normalizeSecNSec(sec, nsec);
+  return *this;
+}
+
+Time& Time::operator -=(const Duration &rhs)
+{
+  sec += -rhs.sec;
+  nsec += -rhs.nsec;
+  normalizeSecNSec(sec, nsec);
+  return *this;
+}
+}
index 437d527534c408f0cee86e7599a1dc037a07c9a2..dd5b068f50bebbb0fe72c90aeed56f1843509681 100644 (file)
@@ -30,14 +30,17 @@ Mcu.IP1=DMA
 Mcu.IP2=NVIC
 Mcu.IP3=RCC
 Mcu.IP4=SYS
-Mcu.IP5=USART3
-Mcu.IPNb=6
+Mcu.IP5=TIM2
+Mcu.IP6=USART3
+Mcu.IPNb=7
 Mcu.Name=STM32F767ZITx
 Mcu.Package=LQFP144
-Mcu.Pin0=PD8
-Mcu.Pin1=PD9
-Mcu.Pin2=VP_SYS_VS_Systick
-Mcu.PinsNb=3
+Mcu.Pin0=PA0/WKUP
+Mcu.Pin1=PA1
+Mcu.Pin2=PD8
+Mcu.Pin3=PD9
+Mcu.Pin4=VP_SYS_VS_Systick
+Mcu.PinsNb=5
 Mcu.ThirdPartyNb=0
 Mcu.UserConstants=
 Mcu.UserName=STM32F767ZITx
@@ -56,6 +59,8 @@ NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false
 NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true
 NVIC.USART3_IRQn=true\:0\:0\:false\:false\:true\:true\:true
 NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false
+PA0/WKUP.Signal=S_TIM2_CH1_ETR
+PA1.Signal=S_TIM2_CH2
 PCC.Checker=false
 PCC.Line=STM32F7x7
 PCC.MCU=STM32F767ZITx
@@ -128,6 +133,10 @@ RCC.VCOI2SOutputFreq_Value=192000000
 RCC.VCOInputFreq_Value=1000000
 RCC.VCOOutputFreq_Value=192000000
 RCC.VCOSAIOutputFreq_Value=192000000
+SH.S_TIM2_CH1_ETR.0=TIM2_CH1,Encoder_Interface
+SH.S_TIM2_CH1_ETR.ConfNb=1
+SH.S_TIM2_CH2.0=TIM2_CH2,Encoder_Interface
+SH.S_TIM2_CH2.ConfNb=1
 USART3.IPParameters=VirtualMode-Asynchronous
 USART3.VirtualMode-Asynchronous=VM_ASYNC
 VP_SYS_VS_Systick.Mode=SysTick