.. _program_listing_file__tmp_ws_src_kobuki_core_include_kobuki_core_packets_controller_info.hpp: Program Listing for File controller_info.hpp ============================================ |exhale_lsh| :ref:`Return to documentation for file ` (``/tmp/ws/src/kobuki_core/include/kobuki_core/packets/controller_info.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp /***************************************************************************** ** Preprocessor *****************************************************************************/ #ifndef KOBUKI_CORE_CONTROLLER_INFO_HPP__ #define KOBUKI_CORE_CONTROLLER_INFO_HPP__ /***************************************************************************** ** Include *****************************************************************************/ #include "../packet_handler/payload_base.hpp" #include "../packet_handler/payload_headers.hpp" /***************************************************************************** ** Namespace *****************************************************************************/ namespace kobuki { /***************************************************************************** ** Interface *****************************************************************************/ class ControllerInfo : public packet_handler::payloadBase { public: ControllerInfo() : packet_handler::payloadBase(false, 13) {}; struct Data { Data() : type(0), p_gain(100*1000), i_gain(100), d_gain(2*1000) {} unsigned char type; unsigned int p_gain; //default value: 100 * 1000 unsigned int i_gain; //default value: 0.1 * 1000 unsigned int d_gain; //default value: 2 * 1000 } data; bool serialise(ecl::PushAndPop & byteStream) { buildBytes(Header::ControllerInfo, byteStream); buildBytes(length, byteStream); buildBytes(data.type, byteStream); buildBytes(data.p_gain, byteStream); buildBytes(data.i_gain, byteStream); buildBytes(data.d_gain, byteStream); return true; } bool deserialise(ecl::PushAndPop & byteStream) { if (byteStream.size() < static_cast(length)+2) { //std::cout << "kobuki_node: kobuki_controller_info: deserialise failed. not enough byte stream." << std::endl; return false; } unsigned char header_id(0x00), length_packed(0x00); buildVariable(header_id, byteStream); buildVariable(length_packed, byteStream); if( header_id != Header::ControllerInfo ) return false; if( length_packed != length ) return false; buildVariable(data.type, byteStream); buildVariable(data.p_gain, byteStream); buildVariable(data.i_gain, byteStream); buildVariable(data.d_gain, byteStream); //showMe(); return constrain(); } bool constrain() { return true; } void showMe() { } }; } // namespace kobuki #endif /* KOBUKI_CORE_CONTROLLER_INFO_HPP__ */