Command.h
Go to the documentation of this file.
1 // this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*-
2 
3 // -- BEGIN LICENSE BLOCK ----------------------------------------------
4 
24 // -- END LICENSE BLOCK ------------------------------------------------
25 
26 //----------------------------------------------------------------------
33 //----------------------------------------------------------------------
34 
35 #ifndef SICK_SAFETYSCANNERS_COLA2_COMMAND_H
36 #define SICK_SAFETYSCANNERS_COLA2_COMMAND_H
37 
38 #include <ros/ros.h>
39 
40 #include <vector>
41 
43 
46 
47 #include <boost/thread/mutex.hpp>
48 
49 namespace sick {
50 namespace cola2 {
51 
55 class Cola2Session;
56 
57 
61 class Command
62 {
63 public:
73  const uint16_t& command_type,
74  const uint16_t& command_mode);
75 
79  virtual ~Command() {}
80 
81 
85  void lockExecutionMutex();
86 
93 
102 
103 
107  void waitForCompletion();
108 
109 
115  uint32_t getSessionID() const;
116 
117 
123  void setSessionID(const uint32_t& session_id);
124 
125 
131  bool wasSuccessful() const;
132 
133 
139  uint8_t getCommandType() const;
140 
146  void setCommandType(const uint8_t& command_type);
147 
153  uint8_t getCommandMode() const;
154 
160  void setCommandMode(const uint8_t& command_mode);
161 
167  uint16_t getRequestID() const;
168 
174  void setRequestID(const uint16_t& request_id);
175 
181  std::vector<uint8_t> getDataVector() const;
182 
188  void setDataVector(const std::vector<uint8_t>& data);
189 
190 protected:
192 
193 private:
194  std::shared_ptr<sick::data_processing::ParseTCPPacket> m_tcp_parser_ptr;
195  std::shared_ptr<sick::data_processing::ReadWriteHelper> m_writer_ptr;
196 
197  boost::mutex m_execution_mutex;
198 
200 
201  uint8_t m_command_mode;
202  uint8_t m_command_type;
203 
204  uint32_t m_session_id;
205  uint16_t m_request_id;
206 
207  std::vector<uint8_t> m_data_vector;
208 
209  virtual bool processReply() = 0;
210  virtual void addTelegramData(sick::datastructure::PacketBuffer::VectorBuffer& telegram) const = 0;
211 
214  void writeCola2StxToDataPtr(uint8_t*& data_ptr) const;
215  void writeLengthToDataPtr(uint8_t*& data_ptr,
217  void writeCola2HubCntrToDataPtr(uint8_t*& data_ptr) const;
218  void writeCola2NoCToDataPtr(uint8_t*& data_ptr) const;
219  void writeSessionIdToDataPtr(uint8_t*& data_ptr) const;
220  void writeRequestIdToDataPtr(uint8_t*& data_ptr) const;
221  void writeCommandTypeToDataPtr(uint8_t*& data_ptr) const;
222  void writeCommandModeToDataPtr(uint8_t*& data_ptr) const;
223  void writeDataToDataPtr(uint8_t*& data_ptr,
225 };
226 
227 
228 } // namespace cola2
229 } // namespace sick
230 
231 
232 #endif // SICK_SAFETYSCANNERS_COLA2_COMMAND_H
void setCommandMode(const uint8_t &command_mode)
Sets the command mode.
Definition: Command.cpp:97
void setSessionID(const uint32_t &session_id)
Sets the session ID.
Definition: Command.cpp:107
void setDataVector(const std::vector< uint8_t > &data)
Sets the data vector.
Definition: Command.cpp:142
std::shared_ptr< sick::data_processing::ReadWriteHelper > m_writer_ptr
Definition: Command.h:195
std::vector< uint8_t > getDataVector() const
Returns the data vector.
Definition: Command.cpp:137
uint16_t getRequestID() const
Returns the request id of the command.
Definition: Command.cpp:112
void processReplyBase(const sick::datastructure::PacketBuffer::VectorBuffer &packet)
Parses the da incoming data package and then processes it with the inherited processReply. Afterwards the mutex will be unlocked to allow new commands to be send.
Definition: Command.cpp:65
void writeCommandTypeToDataPtr(uint8_t *&data_ptr) const
Definition: Command.cpp:195
sick::datastructure::PacketBuffer::VectorBuffer prepareHeader() const
Definition: Command.cpp:130
boost::mutex m_execution_mutex
Definition: Command.h:197
uint8_t getCommandType() const
Returns the command type.
Definition: Command.cpp:82
void setRequestID(const uint16_t &request_id)
Sets the request ID of the command.
Definition: Command.cpp:117
virtual void addTelegramData(sick::datastructure::PacketBuffer::VectorBuffer &telegram) const =0
void writeCola2HubCntrToDataPtr(uint8_t *&data_ptr) const
Definition: Command.cpp:173
void writeDataToDataPtr(uint8_t *&data_ptr, datastructure::PacketBuffer::VectorBuffer &telegram) const
Definition: Command.cpp:147
void constructTelegram(sick::datastructure::PacketBuffer::VectorBuffer &telegram) const
Adds the data to the telegram and afterwards the header with the correct length.
Definition: Command.cpp:59
void setCommandType(const uint8_t &command_type)
Sets the command type.
Definition: Command.cpp:87
Base class for commands. Defines the base interface and does the common tasks.
Definition: Command.h:61
Command(sick::cola2::Cola2Session &session, const uint16_t &command_type, const uint16_t &command_mode)
Constructor of the command. Sets the common variables for a command to the sensor.
Definition: Command.cpp:43
uint32_t getSessionID() const
Returns the current session ID.
Definition: Command.cpp:102
void writeLengthToDataPtr(uint8_t *&data_ptr, datastructure::PacketBuffer::VectorBuffer &telegram) const
Definition: Command.cpp:166
std::shared_ptr< sick::data_processing::ParseTCPPacket > m_tcp_parser_ptr
Definition: Command.h:194
void waitForCompletion()
Scooped call to the mutex, which will block until the reply was processed.
Definition: Command.cpp:72
void writeCola2NoCToDataPtr(uint8_t *&data_ptr) const
Definition: Command.cpp:179
uint32_t m_session_id
Definition: Command.h:204
sick::cola2::Cola2Session & m_session
Definition: Command.h:191
uint8_t getCommandMode() const
Returns the command mode.
Definition: Command.cpp:92
void writeCommandModeToDataPtr(uint8_t *&data_ptr) const
Definition: Command.cpp:200
void writeRequestIdToDataPtr(uint8_t *&data_ptr) const
Definition: Command.cpp:190
void lockExecutionMutex()
Locks a mutex to prevent other commands being executed in parallel.
Definition: Command.cpp:54
std::vector< uint8_t > m_data_vector
Definition: Command.h:207
uint8_t m_command_type
Definition: Command.h:202
std::vector< uint8_t > VectorBuffer
Typedef for a vector buffer, to sort the incoming packets.
Definition: PacketBuffer.h:71
Establishes a cola2 session with a sensor and enables execution of commands in this session...
Definition: Cola2Session.h:72
bool wasSuccessful() const
Returns if the command was successfully parsed.
Definition: Command.cpp:77
virtual ~Command()
We have virtual member functions, so a virtual destructor is needed.
Definition: Command.h:79
virtual bool processReply()=0
void writeSessionIdToDataPtr(uint8_t *&data_ptr) const
Definition: Command.cpp:185
uint16_t m_request_id
Definition: Command.h:205
uint8_t m_command_mode
Definition: Command.h:201
void writeCola2StxToDataPtr(uint8_t *&data_ptr) const
Definition: Command.cpp:160
void addTelegramHeader(sick::datastructure::PacketBuffer::VectorBuffer &telegram) const
Definition: Command.cpp:122


sick_safetyscanners
Author(s): Lennart Puck
autogenerated on Thu May 9 2019 02:41:08