.. _program_listing_file__tmp_ws_src_sick_safetyscanners_base_include_sick_safetyscanners_base_cola2_Command.h: Program Listing for File Command.h ================================== |exhale_lsh| :ref:`Return to documentation for file ` (``/tmp/ws/src/sick_safetyscanners_base/include/sick_safetyscanners_base/cola2/Command.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp // this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*- // -- BEGIN LICENSE BLOCK ---------------------------------------------- // -- END LICENSE BLOCK ------------------------------------------------ //---------------------------------------------------------------------- //---------------------------------------------------------------------- #ifndef SICK_SAFETYSCANNERS_BASE_COLA2_COMMAND_H #define SICK_SAFETYSCANNERS_BASE_COLA2_COMMAND_H #include #include "sick_safetyscanners_base/datastructure/PacketBuffer.h" #include "sick_safetyscanners_base/Logging.h" #include "sick_safetyscanners_base/data_processing/ParseTCPPacket.h" #include "sick_safetyscanners_base/data_processing/ReadWriteHelper.hpp" #include namespace sick { namespace cola2 { class Cola2Session; class Command { public: Command(sick::cola2::Cola2Session& session, uint16_t command_type, uint16_t command_mode); virtual ~Command() {} void lockExecutionMutex(); std::vector constructTelegram(const std::vector& telegram) const; void processReplyBase(const std::vector& packet); void waitForCompletion(); uint32_t getSessionID() const; void setSessionID(uint32_t session_id); bool wasSuccessful() const; uint8_t getCommandType() const; void setCommandType(const uint8_t& command_type); uint8_t getCommandMode() const; void setCommandMode(const uint8_t& command_mode); uint16_t getRequestID() const; void setRequestID(const uint16_t& request_id); std::vector getDataVector() const; void setDataVector(const std::vector& data); protected: sick::cola2::Cola2Session& m_session; std::vector expandTelegram(const std::vector& telegram, size_t additional_bytes) const; private: std::shared_ptr m_tcp_parser_ptr; boost::mutex m_execution_mutex; bool m_was_successful; uint8_t m_command_mode; uint8_t m_command_type; uint32_t m_session_id; uint16_t m_request_id; std::vector m_data_vector; virtual bool processReply() = 0; virtual std::vector addTelegramData(const std::vector& telegram) const = 0; std::vector addTelegramHeader(const std::vector& telegram) const; std::vector prepareHeader() const; void writeCola2StxToDataPtr(std::vector::iterator data_ptr) const; void writeLengthToDataPtr(std::vector::iterator data_ptr, const std::vector& telegram) const; void writeCola2HubCntrToDataPtr(std::vector::iterator data_ptr) const; void writeCola2NoCToDataPtr(std::vector::iterator data_ptr) const; void writeSessionIdToDataPtr(std::vector::iterator data_ptr) const; void writeRequestIdToDataPtr(std::vector::iterator data_ptr) const; void writeCommandTypeToDataPtr(std::vector::iterator data_ptr) const; void writeCommandModeToDataPtr(std::vector::iterator data_ptr) const; void writeDataToDataPtr(std::vector::iterator data_ptr, const std::vector& telegram) const; }; } // namespace cola2 } // namespace sick #endif // SICK_SAFETYSCANNERS_BASE_COLA2_COMMAND_H