Program Listing for File ParseIntrusionData.h

Return to documentation for file (/tmp/ws/src/sick_safetyscanners_base/include/sick_safetyscanners_base/data_processing/ParseIntrusionData.h)

// this is for emacs file handling -*- mode: c++; indent-tabs-mode: nil -*-

// -- BEGIN LICENSE BLOCK ----------------------------------------------

// -- END LICENSE BLOCK ------------------------------------------------

//----------------------------------------------------------------------
//----------------------------------------------------------------------

#ifndef SICK_SAFETYSCANNERS_BASE_DATA_PROCESSING_PARSEINTRUSIONDATA_H
#define SICK_SAFETYSCANNERS_BASE_DATA_PROCESSING_PARSEINTRUSIONDATA_H

#include "sick_safetyscanners_base/datastructure/Data.h"
#include "sick_safetyscanners_base/datastructure/DerivedValues.h"
#include "sick_safetyscanners_base/datastructure/PacketBuffer.h"

#include "sick_safetyscanners_base/data_processing/ReadWriteHelper.hpp"

#include <vector>

namespace sick {
namespace data_processing {

class ParseIntrusionData
{
public:
  ParseIntrusionData();

  datastructure::IntrusionData parseUDPSequence(const datastructure::PacketBuffer& buffer,
                                                datastructure::Data& data);
  uint16_t getNumScanPoints() const;
  void setNumScanPoints(const uint16_t& num_scan_points);

private:
  uint16_t m_num_scan_points;

  void setDataInIntrusionData(std::vector<uint8_t>::const_iterator data_ptr,
                              datastructure::IntrusionData& intrusion_data) const;
  void setDataInIntrusionDatums(
    std::vector<uint8_t>::const_iterator data_ptr,
    std::vector<sick::datastructure::IntrusionDatum>& intrusion_datums) const;
  uint16_t setSizeInIntrusionDatum(const uint16_t& offset,
                                   std::vector<uint8_t>::const_iterator data_ptr,
                                   sick::datastructure::IntrusionDatum& datum) const;
  uint16_t setFlagsInIntrusionDatum(const uint16_t& offset,
                                    std::vector<uint8_t>::const_iterator data_ptr,
                                    sick::datastructure::IntrusionDatum& datum) const;
  bool checkIfPreconditionsAreMet(const datastructure::Data& data) const;
  bool checkIfIntrusionDataIsPublished(const datastructure::Data& data) const;
  bool checkIfDataContainsNeededParsedBlocks(const datastructure::Data& data) const;
};

} // namespace data_processing
} // namespace sick

#endif // SICK_SAFETYSCANNERS_BASE_DATA_PROCESSING_PARSEINTRUSIONDATA_H