Program Listing for File ConfigData.h

Return to documentation for file (/tmp/ws/src/sick_safetyscanners_base/include/sick_safetyscanners_base/datastructure/ConfigData.h)

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

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

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

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

#ifndef SICK_SAFETYSCANNERS_BASE_DATASTRUCTURE_CONFIGDATA_H
#define SICK_SAFETYSCANNERS_BASE_DATASTRUCTURE_CONFIGDATA_H

#include "sick_safetyscanners_base/datastructure/DerivedValues.h"
#include <boost/asio/ip/address_v4.hpp>
#include <iostream>
#include <vector>

namespace sick {
namespace datastructure {


class ConfigData
{
public:
  ConfigData();
  std::string getVersionCVersion() const;
  void setVersionCVersion(const std::string& version_c_version);

  uint8_t getVersionMajorVersionNumber() const;
  void setVersionMajorVersionNumber(const uint8_t& version_major_version_number);

  uint8_t getVersionMinorVersionNumber() const;
  void setVersionMinorVersionNumber(const uint8_t& version_minor_version_number);

  uint8_t getVersionReleaseNumber() const;
  void setVersionReleaseNumber(const uint8_t& version_release_number);

  boost::asio::ip::address_v4 getHostIp() const;
  void setHostIp(const boost::asio::ip::address_v4& host_ip);
  void setHostIp(const std::string& host_ip);

  uint16_t getHostUdpPort() const;
  void setHostUdpPort(const uint16_t& host_udp_port);

  uint8_t getChannel() const;
  void setChannel(const uint8_t& channel);

  bool getEnabled() const;
  void setEnabled(bool enabled);

  uint8_t getEInterfaceType() const;
  void setEInterfaceType(const uint8_t& e_interface_type);

  uint16_t getPublishingFrequency() const;
  void setPublishingFrequency(const uint16_t& publishing_frequency);

  float getStartAngle() const;
  void setStartAngle(const int32_t& start_angle);

  void setStartAngleDegrees(const float& start_angle);

  float getEndAngle() const;
  void setEndAngle(const int32_t& end_angle);
  void setEndAngleDegrees(const float& end_angle);

  uint16_t getFeatures() const;
  void setFeatures(const uint16_t& features);
  void setFeatures(bool general_system_state,
                   bool derived_settings,
                   bool measurement_data,
                   bool intrusion_data,
                   bool application_data);

  uint16_t getDerivedMultiplicationFactor() const;

  void setDerivedMultiplicationFactor(const uint16_t& multiplication_factor);

  uint16_t getDerivedNumberOfBeams() const;

  void setDerivedNumberOfBeams(const uint16_t& number_of_beams);

  uint16_t getDerivedScanTime() const;

  void setDerivedScanTime(const uint16_t& scan_time);

  float getDerivedStartAngle() const;

  void setDerivedStartAngle(const int32_t& start_angle);

  float getDerivedAngularBeamResolution() const;

  void setDerivedAngularBeamResolution(const int32_t& angular_beam_resolution);

  void setDerivedAngularBeamResolutionDegrees(const float& angular_beam_resolution);

  uint32_t getDerivedInterbeamPeriod() const;

  void setDerivedInterbeamPeriod(const uint32_t& interbeam_period);

private:
  const double m_ANGLE_RESOLUTION = 4194304.0;

  // TODO cleanup and refactor in different subclasses

  std::string m_version_c_version;
  uint8_t m_version_major_version_number;
  uint8_t m_version_minor_version_number;
  uint8_t m_version_release_number;
  boost::asio::ip::address_v4 m_host_ip;
  uint16_t m_host_udp_port;
  uint8_t m_channel;
  bool m_enabled;
  uint8_t m_e_interface_type;
  uint16_t m_publishing_frequency;
  float m_start_angle;
  float m_end_angle;
  uint16_t m_features;
  uint16_t m_derived_multiplication_factor;
  uint16_t m_derived_number_of_beams;
  uint16_t m_derived_scan_time;
  float m_derived_start_angle;
  float m_derived_angular_beam_resolution; // TODO move into derived values
  uint16_t m_derived_interbeam_period;
};


} // namespace datastructure
} // namespace sick

#endif // SICK_SAFETYSCANNERS_BASE_DATASTRUCTURE_CONFIGDATA_H