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_PARSEMONITORINGCASEDATA_H 00036 #define SICK_SAFETYSCANNERS_DATA_PROCESSING_PARSEMONITORINGCASEDATA_H 00037 00038 #include <sick_safetyscanners/datastructure/Data.h> 00039 #include <sick_safetyscanners/datastructure/MonitoringCaseData.h> 00040 #include <sick_safetyscanners/datastructure/PacketBuffer.h> 00041 00042 #include <sick_safetyscanners/data_processing/ReadWriteHelper.h> 00043 00044 #include <vector> 00045 00046 namespace sick { 00047 00048 namespace data_processing { 00049 00050 00054 class ParseMonitoringCaseData 00055 { 00056 public: 00060 ParseMonitoringCaseData(); 00061 00070 bool parseTCPSequence(const datastructure::PacketBuffer& buffer, 00071 datastructure::MonitoringCaseData& monitoring_case_data) const; 00072 00073 private: 00074 std::shared_ptr<sick::data_processing::ReadWriteHelper> m_reader_ptr; 00075 bool isValid(const uint8_t*& data_ptr) const; 00076 uint16_t readMonitoringCaseNumber(const uint8_t*& data_ptr) const; 00077 uint16_t readFieldIndex(const uint8_t*& data_ptr, const uint8_t index) const; 00078 bool readFieldValid(const uint8_t*& data_ptr, const uint8_t index) const; 00079 }; 00080 00081 } // namespace data_processing 00082 } // namespace sick 00083 00084 #endif // SICK_SAFETYSCANNERS_DATA_PROCESSING_PARSEFIELDGEOMETRYDATA_H