00001 // this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*- 00002 00003 // -- BEGIN LICENSE BLOCK ---------------------------------------------- 00004 00024 // -- END LICENSE BLOCK ------------------------------------------------ 00025 00026 //---------------------------------------------------------------------- 00033 //---------------------------------------------------------------------- 00034 00035 #ifndef SICK_SAFETYSCANNERS_DATA_PROCESSING_PARSEDATAGRAMHEADER_H 00036 #define SICK_SAFETYSCANNERS_DATA_PROCESSING_PARSEDATAGRAMHEADER_H 00037 00038 #include <sick_safetyscanners/datastructure/Data.h> 00039 #include <sick_safetyscanners/datastructure/DatagramHeader.h> 00040 #include <sick_safetyscanners/datastructure/PacketBuffer.h> 00041 00042 #include <sick_safetyscanners/data_processing/ReadWriteHelper.h> 00043 00044 namespace sick { 00045 namespace data_processing { 00046 00053 class ParseDatagramHeader 00054 { 00055 public: 00059 ParseDatagramHeader(); 00060 00070 bool parseUDPSequence(const datastructure::PacketBuffer& buffer, 00071 sick::datastructure::DatagramHeader& header) const; 00072 00073 private: 00074 std::shared_ptr<sick::data_processing::ReadWriteHelper> m_reader_ptr; 00075 00076 void setDataInHeader(const uint8_t*& data_ptr, datastructure::DatagramHeader& header) const; 00077 00078 void setDatagramMarkerInHeader(const uint8_t*& data_ptr, 00079 datastructure::DatagramHeader& header) const; 00080 void setProtocolInHeader(const uint8_t*& data_ptr, datastructure::DatagramHeader& header) const; 00081 void setMajorVersionInHeader(const uint8_t*& data_ptr, 00082 datastructure::DatagramHeader& header) const; 00083 void setMinorVersionInHeader(const uint8_t*& data_ptr, 00084 datastructure::DatagramHeader& header) const; 00085 void setTotalLengthInHeader(const uint8_t*& data_ptr, 00086 datastructure::DatagramHeader& header) const; 00087 void setIdentificationInHeader(const uint8_t*& data_ptr, 00088 datastructure::DatagramHeader& header) const; 00089 void setFragmentOffsetInHeader(const uint8_t*& data_ptr, 00090 datastructure::DatagramHeader& header) const; 00091 }; 00092 00093 } // namespace data_processing 00094 } // namespace sick 00095 00096 #endif // SICK_SAFETYSCANNERS_DATA_PROCESSING_PARSEDATAGRAMHEADER_H